diff options
author | Nicholas Clark <nick@ccl4.org> | 2007-12-29 19:32:52 +0000 |
---|---|---|
committer | Nicholas Clark <nick@ccl4.org> | 2007-12-29 19:32:52 +0000 |
commit | 0d3c21b03f6bad2977f965669c308bd429cf00bf (patch) | |
tree | f603e93ca4645ee588a0d3e04436aefeb531a791 | |
parent | 156d2b4303bd9581fb8f5aea70c69ed9320944c4 (diff) | |
download | perl-0d3c21b03f6bad2977f965669c308bd429cf00bf.tar.gz |
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
-rw-r--r-- | pp_hot.c | 4 | ||||
-rw-r--r-- | sv.c | 4 |
2 files changed, 2 insertions, 6 deletions
@@ -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); } @@ -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); } |