In Perl_reg_temp_copy(), ensure SvMAGIC() is NULL in the new REGEXP.
Nicholas Clark [Thu, 18 Feb 2010 15:23:49 +0000 (15:23 +0000)]
Change c2123ae380a372d5 exposed the fact that Perl_reg_temp_copy() didn't
reset SvMAGIC() to NULL after block copying the "parent" regexp. The analagous
problem with SvSTASH() was fixed with change b9ad13acb338e137.

regcomp.c

index 0b27364..6669d58 100644 (file)
--- a/regcomp.c
+++ b/regcomp.c
@@ -9461,6 +9461,7 @@ Perl_reg_temp_copy (pTHX_ REGEXP *ret_x, REGEXP *rx)
           sizeof(regexp) - STRUCT_OFFSET(regexp, xpv_cur));
     SvLEN_set(ret_x, 0);
     SvSTASH_set(ret_x, NULL);
+    SvMAGIC_set(ret_x, NULL);
     Newx(ret->offs, npar, regexp_paren_pair);
     Copy(r->offs, ret->offs, npar, regexp_paren_pair);
     if (r->substrs) {