From 0d3c21b03f6bad2977f965669c308bd429cf00bf Mon Sep 17 00:00:00 2001 From: Nicholas Clark Date: Sat, 29 Dec 2007 19:32:52 +0000 Subject: Move all code that relies on reading the to-be-thrown-away buffer ahead of the call to sv_chop() that throws it away. p4raw-id: //depot/perl@32777 --- pp_hot.c | 4 +--- sv.c | 4 +--- 2 files changed, 2 insertions(+), 6 deletions(-) diff --git a/pp_hot.c b/pp_hot.c index f987357bf8..c6b5c5c097 100644 --- a/pp_hot.c +++ b/pp_hot.c @@ -2197,10 +2197,8 @@ PP(pp_subst) else if ((i = m - s)) { /* faster from front */ d -= clen; m = d; + Move(s, d - i, i, char); sv_chop(TARG, d-i); - s += i; - while (i--) - *--d = *--s; if (clen) Copy(c, m, clen, char); } diff --git a/sv.c b/sv.c index 913a5daf30..bb64eb9621 100644 --- a/sv.c +++ b/sv.c @@ -4994,10 +4994,8 @@ Perl_sv_insert(pTHX_ SV *bigstr, STRLEN offset, STRLEN len, const char *little, else if ((i = mid - big)) { /* faster from front */ midend -= littlelen; mid = midend; + Move(big, midend - i, i, char); sv_chop(bigstr,midend-i); - big += i; - while (i--) - *--midend = *--big; if (littlelen) Move(little, mid, littlelen,char); } -- cgit v1.2.1