--- src/modules/perl/mod_perl.c	2007/07/13 08:17:02	555907
+++ 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 $/ */

--- src/modules/perl/mod_perl.h	2007/07/13 08:17:02	555907
+++ 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