]> git.pld-linux.org Git - packages/apache1-mod_perl.git/commitdiff
- fix SEGV with perl 5.10
authorareq <areq@pld-linux.org>
Sat, 3 May 2008 17:41:52 +0000 (17:41 +0000)
committercvs2git <feedback@pld-linux.org>
Sun, 24 Jun 2012 12:13:13 +0000 (12:13 +0000)
Changed files:
    apache1-mod_perl-perl510.patch -> 1.1

apache1-mod_perl-perl510.patch [new file with mode: 0644]

diff --git a/apache1-mod_perl-perl510.patch b/apache1-mod_perl-perl510.patch
new file mode 100644 (file)
index 0000000..7f5637b
--- /dev/null
@@ -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 $/ */
This page took 0.108533 seconds and 4 git commands to generate.