Author: stas Date: Thu Mar 3 17:37:59 2005 New Revision: 156118 URL: http://svn.apache.org/viewcvs?view=rev&rev=156118 Log: fix APR::Error's overload of '==' (it was always returning true before), and add the corresponding '!='
Modified: perl/modperl/trunk/Changes perl/modperl/trunk/t/error/runtime.t perl/modperl/trunk/t/response/TestError/runtime.pm perl/modperl/trunk/xs/APR/Error/Error_pm Modified: perl/modperl/trunk/Changes URL: http://svn.apache.org/viewcvs/perl/modperl/trunk/Changes?view=diff&r1=156117&r2=156118 ============================================================================== --- perl/modperl/trunk/Changes (original) +++ perl/modperl/trunk/Changes Thu Mar 3 17:37:59 2005 @@ -12,6 +12,9 @@ =item 1.999_22-dev +fix APR::Error's overload of '==' (it was always returning true +before), and add the corresponding '!=' [Stas] + if $r->document_root was modified, restore it at the end of request [joes] Modified: perl/modperl/trunk/t/error/runtime.t URL: http://svn.apache.org/viewcvs/perl/modperl/trunk/t/error/runtime.t?view=diff&r1=156117&r2=156118 ============================================================================== --- perl/modperl/trunk/t/error/runtime.t (original) +++ perl/modperl/trunk/t/error/runtime.t Thu Mar 3 17:37:59 2005 @@ -11,7 +11,8 @@ die_hook_confess_mp_error die_hook_confess_non_mp_error die_hook_custom_mp_error die_hook_custom_non_mp_error); my @trapped = qw(eval_block_mp_error eval_block_non_mp_error - eval_string_mp_error eval_block_non_error); + eval_string_mp_error eval_block_non_error + overload_test); plan tests => @untrapped + @trapped; Modified: perl/modperl/trunk/t/response/TestError/runtime.pm URL: http://svn.apache.org/viewcvs/perl/modperl/trunk/t/response/TestError/runtime.pm?view=diff&r1=156117&r2=156118 ============================================================================== --- perl/modperl/trunk/t/response/TestError/runtime.pm (original) +++ perl/modperl/trunk/t/response/TestError/runtime.pm Thu Mar 3 17:37:59 2005 @@ -11,7 +11,7 @@ use Apache::TestUtil; use Apache::Const -compile => qw(OK); -use APR::Const -compile => qw(TIMEUP); +use APR::Const -compile => qw(EACCES EAGAIN); use constant SIZE => 2048; @@ -32,6 +32,30 @@ return Apache::OK; } +sub overload_test { + my($r, $socket) = @_; + + eval { mp_error($socket) }; + + die "there should have been an exception" unless $@; + + die "the exception should have been an APR::Error object" + unless ref $@ eq 'APR::Error'; + + # == && != (expecting APR::EAGAIN error) + die "'==' overload is broken" unless $@ == APR::EAGAIN; + die "'==' overload is broken" unless APR::EAGAIN == $@; + die "'==' overload is broken" unless $@ == $@; + die "'!=' overload is broken" unless $@ != APR::EACCES; + die "'!=' overload is broken" unless APR::EACCES != $@; + die "'!=' overload is broken" if $@ != $@; + + # XXX: add more overload tests + + $r->print("ok overload_test"); + +} + sub plain_mp_error { my($r, $socket) = @_; t_server_log_error_is_expected(); @@ -78,7 +102,7 @@ # throw in some retry attempts my $tries = 0; RETRY: eval { mp_error($socket) }; - if ($@ && ref($@) && $@ == APR::TIMEUP) { + if ($@ && ref($@) && $@ == APR::EAGAIN) { if ($tries++ < 3) { goto RETRY; } @@ -94,7 +118,7 @@ sub eval_string_mp_error { my($r, $socket) = @_; eval '$socket->recv(my $buffer, SIZE)'; - if ($@ && ref($@) && $@ == APR::TIMEUP) { + if ($@ && ref($@) && $@ == APR::EAGAIN) { $r->print("ok eval_string_mp_error"); } else { Modified: perl/modperl/trunk/xs/APR/Error/Error_pm URL: http://svn.apache.org/viewcvs/perl/modperl/trunk/xs/APR/Error/Error_pm?view=diff&r1=156117&r2=156118 ============================================================================== --- perl/modperl/trunk/xs/APR/Error/Error_pm (original) +++ perl/modperl/trunk/xs/APR/Error/Error_pm Thu Mar 3 17:37:59 2005 @@ -6,7 +6,8 @@ use overload nomethod => \&fatal, 'bool' => \&str, - '==' => \&num, + '==' => \&num_cmp, + '!=' => \&num_cmp_not, '0+' => \&num, '""' => \&str; @@ -37,6 +38,9 @@ sub num { $_[0]->{rc} } +sub num_cmp { $_[0]->{rc} == $_[1] } +sub num_cmp_not { $_[0]->{rc} != $_[1] } + # skip the wrappers from this package from the long callers trace $Carp::CarpInternal{+__PACKAGE__}++; @@ -63,6 +67,3 @@ &Carp::confess; } } - -1; -__END__