Author: gozer Date: Sat Feb 23 23:23:16 2008 New Revision: 630597 URL: http://svn.apache.org/viewvc?rev=630597&view=rev Log: Fix a possible $r->location curruption. Sometimes, the path copied into $r->location would end it's life before $r.
Reviewed-By: gozer Submitted-By: Torsten Foertsch <[EMAIL PROTECTED]> Message-ID: <[EMAIL PROTECTED]> Modified: perl/modperl/trunk/Changes perl/modperl/trunk/src/modules/perl/modperl_config.c perl/modperl/trunk/t/response/TestAPI/add_config.pm Modified: perl/modperl/trunk/Changes URL: http://svn.apache.org/viewvc/perl/modperl/trunk/Changes?rev=630597&r1=630596&r2=630597&view=diff ============================================================================== --- perl/modperl/trunk/Changes (original) +++ perl/modperl/trunk/Changes Sat Feb 23 23:23:16 2008 @@ -12,6 +12,9 @@ =item 2.0.4-dev +Fix $r->location corruption under certain conditions +[Gozer] + Fix a crash when spawning Perl threads under Perl 5.10 [Gozer] Modified: perl/modperl/trunk/src/modules/perl/modperl_config.c URL: http://svn.apache.org/viewvc/perl/modperl/trunk/src/modules/perl/modperl_config.c?rev=630597&r1=630596&r2=630597&view=diff ============================================================================== --- perl/modperl/trunk/src/modules/perl/modperl_config.c (original) +++ perl/modperl/trunk/src/modules/perl/modperl_config.c Sat Feb 23 23:23:16 2008 @@ -518,7 +518,7 @@ parms.limited = -1; parms.server = s; parms.override = override; - parms.path = path; + parms.path = apr_pstrdup(p, path); parms.pool = p; #ifdef MP_HTTPD_HAS_OVERRIDE_OPTS if (override_options == MP_HTTPD_OVERRIDE_OPTS_UNSET) { Modified: perl/modperl/trunk/t/response/TestAPI/add_config.pm URL: http://svn.apache.org/viewvc/perl/modperl/trunk/t/response/TestAPI/add_config.pm?rev=630597&r1=630596&r2=630597&view=diff ============================================================================== --- perl/modperl/trunk/t/response/TestAPI/add_config.pm (original) +++ perl/modperl/trunk/t/response/TestAPI/add_config.pm Sat Feb 23 23:23:16 2008 @@ -58,6 +58,14 @@ }; $r->pnotes(followsymlinks => "$@"); + eval { + my $path="/a/path/to/somewhere"; + $r->add_config(['PerlResponseHandler '.__PACKAGE__], -1, $path); + # now overwrite the path in place to see if the location pointer + # is really copied: see modperl_config_dir_create + $path=~tr[a-z][n-za-m]; + }; + return Apache2::Const::DECLINED; } @@ -82,7 +90,7 @@ my ($self, $r) = @_; my $cf = $self->get_config($r->server); - plan $r, tests => 8; + plan $r, tests => 9; ok t_cmp $r->pnotes('add_config1'), qr/.+\n/; ok t_cmp $r->pnotes('add_config2'), (APACHE22 ? qr/.+\n/ : ''); @@ -102,6 +110,8 @@ my $opts = APACHE22 ? Apache2::Const::OPT_SYM_LINKS : $expect; ok t_cmp $r->allow_override_opts, $opts; + ok t_cmp $r->location, '/a/path/to/somewhere'; + return Apache2::Const::OK; } @@ -117,7 +127,6 @@ <Directory @DocumentRoot@> AllowOverride All </Directory> - PerlResponseHandler TestAPI::add_config PerlMapToStorageHandler TestAPI::add_config::map2storage PerlFixupHandler TestAPI::add_config::fixup </VirtualHost>