summaryrefslogtreecommitdiff
path: root/pp.c
diff options
context:
space:
mode:
authorSADAHIRO Tomoyuki <BQW10602@nifty.com>2006-04-17 03:45:37 +0900
committerNicholas Clark <nick@ccl4.org>2006-04-17 15:11:03 +0000
commit74d49cd0c6fe69554c001c4efb03d89706f99ff5 (patch)
tree8c4f8cf8104059c8199a6a708d81a2439b8096b9 /pp.c
parentb60bf3b9b39ef71d61640f204c3c1fd31df65fb6 (diff)
downloadperl-74d49cd0c6fe69554c001c4efb03d89706f99ff5.tar.gz
Re: [PATCH] update to pp_complement() via Coverity
Message-Id: <20060416184044.4ADB.BQW10602@nifty.com> Date: Sun, 16 Apr 2006 18:45:37 +0900 Subject: Re: [PATCH] update to pp_complement() via Coverity From: SADAHIRO Tomoyuki <bqw10602@nifty.com> Message-Id: <20060417230614.20A5.BQW10602@nifty.com> Date: Mon, 17 Apr 2006 23:06:21 +0900 p4raw-id: //depot/perl@27871
Diffstat (limited to 'pp.c')
-rw-r--r--pp.c20
1 files changed, 11 insertions, 9 deletions
diff --git a/pp.c b/pp.c
index 8914545a07..7a70e15d86 100644
--- a/pp.c
+++ b/pp.c
@@ -2433,10 +2433,12 @@ PP(pp_complement)
UV nchar = 0;
UV nwide = 0;
U8 * const send = tmps + len;
+ U8 * const origtmps = tmps;
+ const UV utf8flags = UTF8_ALLOW_ANYUV;
while (tmps < send) {
- const UV c = utf8n_to_uvchr(tmps, send-tmps, &l, UTF8_ALLOW_ANYUV);
- tmps += UTF8SKIP(tmps);
+ const UV c = utf8n_to_uvchr(tmps, send-tmps, &l, utf8flags);
+ tmps += l;
targlen += UNISKIP(~c);
nchar++;
if (c > 0xff)
@@ -2444,17 +2446,17 @@ PP(pp_complement)
}
/* Now rewind strings and write them. */
- tmps -= len;
+ tmps = origtmps;
if (nwide) {
U8 *result;
U8 *p;
- Newxz(result, targlen + 1, U8);
+ Newx(result, targlen + 1, U8);
p = result;
while (tmps < send) {
- const UV c = utf8n_to_uvchr(tmps, send-tmps, &l, UTF8_ALLOW_ANYUV);
- tmps += UTF8SKIP(tmps);
+ const UV c = utf8n_to_uvchr(tmps, send-tmps, &l, utf8flags);
+ tmps += l;
p = uvchr_to_utf8_flags(p, ~c, UNICODE_ALLOW_ANY);
}
*p = '\0';
@@ -2466,11 +2468,11 @@ PP(pp_complement)
U8 *result;
U8 *p;
- Newxz(result, nchar + 1, U8);
+ Newx(result, nchar + 1, U8);
p = result;
while (tmps < send) {
- const U8 c = (U8)utf8n_to_uvchr(tmps, 0, &l, UTF8_ALLOW_ANY);
- tmps += UTF8SKIP(tmps);
+ const U8 c = (U8)utf8n_to_uvchr(tmps, send-tmps, &l, utf8flags);
+ tmps += l;
*p++ = ~c;
}
*p = '\0';