summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--pp.c7
-rw-r--r--pp_ctl.c4
-rw-r--r--pp_hot.c3
3 files changed, 3 insertions, 11 deletions
diff --git a/pp.c b/pp.c
index 1c7b18a680..e1a6c78268 100644
--- a/pp.c
+++ b/pp.c
@@ -5552,13 +5552,6 @@ PP(pp_split)
/* we never pass the REXEC_COPY_STR flag, so it should
* never get copied */
assert(!RX_MATCH_COPIED(rx));
- if (RX_MATCH_COPIED(rx) && RX_SUBBEG(rx) != orig) {
- m = s;
- s = orig;
- orig = RX_SUBBEG(rx);
- s = orig + (m - s);
- strend = s + (strend - m);
- }
m = RX_OFFS(rx)[0].start + orig;
if (gimme_scalar) {
diff --git a/pp_ctl.c b/pp_ctl.c
index ecb8c9fcaf..af0d55827d 100644
--- a/pp_ctl.c
+++ b/pp_ctl.c
@@ -216,9 +216,7 @@ PP(pp_substcont)
if (CxONCE(cx) || s < orig ||
!CALLREGEXEC(rx, s, cx->sb_strend, orig,
(s == m) + RX_GOFS(rx), cx->sb_targ, NULL,
- ((cx->sb_rflags & REXEC_COPY_STR)
- ? (REXEC_IGNOREPOS|REXEC_NOT_FIRST)
- : (REXEC_COPY_STR|REXEC_IGNOREPOS|REXEC_NOT_FIRST))))
+ (REXEC_IGNOREPOS|REXEC_NOT_FIRST)))
{
SV *targ = cx->sb_targ;
diff --git a/pp_hot.c b/pp_hot.c
index 6530ae5b4d..b549d1c856 100644
--- a/pp_hot.c
+++ b/pp_hot.c
@@ -2217,7 +2217,8 @@ PP(pp_subst)
#ifdef PERL_OLD_COPY_ON_WRITE
&& !is_cow
#endif
- && (I32)clen <= RX_MINLENRET(rx) && (once || !(r_flags & REXEC_COPY_STR))
+ && (I32)clen <= RX_MINLENRET(rx)
+ && (once || !(r_flags & REXEC_COPY_STR))
&& !(RX_EXTFLAGS(rx) & RXf_LOOKBEHIND_SEEN)
&& (!doutf8 || SvUTF8(TARG))
&& !(rpm->op_pmflags & PMf_NONDESTRUCT))