From b82a3648177ebb2a38078baab9f863b5d95ee88f Mon Sep 17 00:00:00 2001 From: areq Date: Sat, 3 May 2008 17:41:52 +0000 Subject: [PATCH] - fix SEGV with perl 5.10 Changed files: apache1-mod_perl-perl510.patch -> 1.1 --- apache1-mod_perl-perl510.patch | 46 ++++++++++++++++++++++++++++++++++ 1 file changed, 46 insertions(+) create mode 100644 apache1-mod_perl-perl510.patch diff --git a/apache1-mod_perl-perl510.patch b/apache1-mod_perl-perl510.patch new file mode 100644 index 0000000..7f5637b --- /dev/null +++ b/apache1-mod_perl-perl510.patch @@ -0,0 +1,46 @@ +--- 1.x/src/modules/perl/mod_perl.h 2007/07/13 08:17:02 555907 ++++ 1.x/src/modules/perl/mod_perl.h 2007/07/13 08:21:11 555908 +@@ -301,6 +301,13 @@ + + #define av_copy_array(av) av_make(av_len(av)+1, AvARRAY(av)) + ++#define MP_safe_av_undef(av) \ ++if (av != Nullav) { \ ++ av_undef(av); \ ++ SvREFCNT_dec((SV*)av); \ ++ av = Nullav; \ ++} ++ + #ifndef newRV_noinc + #define newRV_noinc(sv) ((Sv = newRV(sv)), --SvREFCNT(SvRV(Sv)), Sv) + #endif + +--- 1.x/src/modules/perl/mod_perl.c 2007/07/13 08:17:02 555907 ++++ 1.x/src/modules/perl/mod_perl.c 2007/07/13 08:21:11 555908 +@@ -277,13 +277,8 @@ + + mp_request_rec = 0; + +- av_undef(orig_inc); +- SvREFCNT_dec((SV*)orig_inc); +- orig_inc = Nullav; +- +- av_undef(cleanup_av); +- SvREFCNT_dec((SV*)cleanup_av); +- cleanup_av = Nullav; ++ MP_safe_av_undef(orig_inc) ++ MP_safe_av_undef(cleanup_av) + + #ifdef PERL_STACKED_HANDLERS + hv_undef(stacked_handlers); +@@ -1159,9 +1154,7 @@ + perl_clear_env(); + + /* reset @INC */ +- av_undef(GvAV(incgv)); +- SvREFCNT_dec(GvAV(incgv)); +- GvAV(incgv) = Nullav; ++ MP_safe_av_undef(GvAV(incgv)) + GvAV(incgv) = av_copy_array(orig_inc); + + /* reset $/ */ -- 2.44.0