diff options
author | SADAHIRO Tomoyuki <BQW10602@nifty.com> | 2006-04-17 03:45:37 +0900 |
---|---|---|
committer | Nicholas Clark <nick@ccl4.org> | 2006-04-17 15:11:03 +0000 |
commit | 74d49cd0c6fe69554c001c4efb03d89706f99ff5 (patch) | |
tree | 8c4f8cf8104059c8199a6a708d81a2439b8096b9 /pp.c | |
parent | b60bf3b9b39ef71d61640f204c3c1fd31df65fb6 (diff) | |
download | perl-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.c | 20 |
1 files changed, 11 insertions, 9 deletions
@@ -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'; |