The attached patch stops mod_perl-1.x from calling av_undef() on a NULL AV*.
This fixes some horrible nastiness when using bleadperl, which no longer returns early from av_undef() in the case that the AV* is NULL as of perl change #26513.
Would someone please be kind enough to take a quick look and +1 it if looks OK before I commit?
(mod_perl-2.x seems not to use av_undef() anywhere, so no similar change will be required there.)
--
Index: src/modules/perl/mod_perl.c =================================================================== --- src/modules/perl/mod_perl.c (revision 553245) +++ src/modules/perl/mod_perl.c (working copy) @@ -277,13 +277,17 @@ mp_request_rec = 0; - av_undef(orig_inc); - SvREFCNT_dec((SV*)orig_inc); - orig_inc = Nullav; + if (orig_inc != Nullav) { + av_undef(orig_inc); + SvREFCNT_dec((SV*)orig_inc); + orig_inc = Nullav; + } - av_undef(cleanup_av); - SvREFCNT_dec((SV*)cleanup_av); - cleanup_av = Nullav; + if (cleanup_av != Nullav) { + av_undef(cleanup_av); + SvREFCNT_dec((SV*)cleanup_av); + cleanup_av = Nullav; + } #ifdef PERL_STACKED_HANDLERS hv_undef(stacked_handlers); @@ -1159,9 +1163,11 @@ perl_clear_env(); /* reset @INC */ - av_undef(GvAV(incgv)); - SvREFCNT_dec(GvAV(incgv)); - GvAV(incgv) = Nullav; + if (GvAV(incgv) != Nullav) { + av_undef(GvAV(incgv)); + SvREFCNT_dec(GvAV(incgv)); + GvAV(incgv) = Nullav; + } GvAV(incgv) = av_copy_array(orig_inc); /* reset $/ */
--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]