diff options
Diffstat (limited to 'pp_ctl.c')
-rw-r--r-- | pp_ctl.c | 19 |
1 files changed, 9 insertions, 10 deletions
@@ -90,15 +90,6 @@ PP(pp_regcomp) else { t = SvPV(tmpstr, len); -#ifndef INCOMPLETE_TAINTS - if (tainting) { - if (tainted) - pm->op_pmdynflags |= PMdf_TAINTED; - else - pm->op_pmdynflags &= ~PMdf_TAINTED; - } -#endif - /* Check against the last compiled regexp. */ if (!pm->op_pmregexp || !pm->op_pmregexp->precomp || pm->op_pmregexp->prelen != len || @@ -114,6 +105,15 @@ PP(pp_regcomp) } } +#ifndef INCOMPLETE_TAINTS + if (tainting) { + if (tainted) + pm->op_pmdynflags |= PMdf_TAINTED; + else + pm->op_pmdynflags &= ~PMdf_TAINTED; + } +#endif + if (!pm->op_pmregexp->prelen && curpm) pm = curpm; else if (strEQ("\\s+", pm->op_pmregexp->precomp)) @@ -155,7 +155,6 @@ PP(pp_substcont) SV *targ = cx->sb_targ; sv_catpvn(dstr, s, cx->sb_strend - s); - TAINT_IF(cx->sb_rxtainted || RX_MATCH_TAINTED(rx)); cx->sb_rxtainted |= RX_MATCH_TAINTED(rx); (void)SvOOK_off(targ); |