hi guys... Lyle brought this to my attention during some other offline discussions this afternoon.
apparently, under mod_perl 1.3, $r->args(undef) doesn't work properly. to test, just add this line to your httpd.conf: PerlInitHandler 'sub {shift->args(undef); return 0}' and try accessing mod_info. mod_info has lots of if (!r->args) logic in it, so undef()ing $r->args could be a legitimate thing to want to do to (and DWIMmy) as well. the below simple patch fixes the problem. I'm not sure, though, if this isn't a more pervasive bug for other request_rec fields. I added some trace statements in Apache.xs and it seems that even if $val is undef that ST(1) in query_string() in still defined. furthermore, perl throws "Use of uninitialized value in subroutine entry at /src/bleedperl/lib/site_perl/5.7.3/i686-linux-thread-multi/Apache.pm" my guess here is that perl is interpreting $val as 0 or "" (per perldiag), which is defined, and thus get_set_PVp() is thrown off and r->args is never set to NULL. it almost seems like a Perl bug if this analysis is right (or at least something to keep in mind per XS relationships) anyway, as I said, the below patch fixes $r->args(). does anyone think this is an issue elsewhere as well? in either case, this probably deserves a test case under t/ (which I'll work on if folks agree this is legitimate). --Geoff --- Apache/Apache.pm 16 May 2002 15:21:46 -0000 1.71 +++ Apache/Apache.pm 28 May 2002 19:38:41 -0000 @@ -58,7 +58,7 @@ sub args { my($r, $val) = @_; - my $args = @_ > 1 ? $r->query_string($val) : $r->query_string; + my $args = @_ > 1 ? $r->query_string($val||undef) : $r->query_string; return $args unless wantarray; parse_args(1, $args); } --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]