Turn on match string copying when /e flag is set on a substitution.
authorJarkko Hietaniemi <jhi@iki.fi>
Wed, 22 Feb 2006 20:16:00 +0000 (20:16 +0000)
committerRafael Garcia-Suarez <rgarciasuarez@gmail.com>
Wed, 22 Feb 2006 20:28:41 +0000 (20:28 +0000)
Subject: [PATCH] dodge a valgrind error (for maint or blead)
Message-ID: <43FCB896.7060106@gmail.com>

p4raw-id: //depot/perl@27270

pp_hot.c

index e352763..8d590ca 100644 (file)
--- a/pp_hot.c
+++ b/pp_hot.c
@@ -1335,7 +1335,7 @@ PP(pp_match)
        }
     }
     if ((!global && rx->nparens)
-           || SvTEMP(TARG) || PL_sawampersand)
+           || SvTEMP(TARG) || PL_sawampersand || (pm->op_pmflags & PMf_EVAL))
        r_flags |= REXEC_COPY_STR;
     if (SvSCREAM(TARG))
        r_flags |= REXEC_SCREAM;
@@ -2101,7 +2101,8 @@ PP(pp_subst)
        pm = PL_curpm;
        rx = PM_GETRE(pm);
     }
-    r_flags = (rx->nparens || SvTEMP(TARG) || PL_sawampersand)
+    r_flags = (rx->nparens || SvTEMP(TARG) || PL_sawampersand
+           || (pm->op_pmflags & PMf_EVAL))
               ? REXEC_COPY_STR : 0;
     if (SvSCREAM(TARG))
        r_flags |= REXEC_SCREAM;