summaryrefslogtreecommitdiff
path: root/pp_ctl.c
diff options
context:
space:
mode:
Diffstat (limited to 'pp_ctl.c')
-rw-r--r--pp_ctl.c19
1 files changed, 9 insertions, 10 deletions
diff --git a/pp_ctl.c b/pp_ctl.c
index f121b7e453..96e852e50a 100644
--- a/pp_ctl.c
+++ b/pp_ctl.c
@@ -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);