summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authortjr <tjr@FreeBSD.org>2003-02-22 00:06:05 +0000
committertjr <tjr@FreeBSD.org>2003-02-22 00:06:05 +0000
commit7d13c2dbf310d48aa11375e0c7adf769b45e68b0 (patch)
treebcc1cd7c0ba36b3145e8657e9df5b11371fe675a
parent5e9cec1d9f093c077ccf682f9bbc26bc7f6d0144 (diff)
downloadFreeBSD-src-7d13c2dbf310d48aa11375e0c7adf769b45e68b0.zip
FreeBSD-src-7d13c2dbf310d48aa11375e0c7adf769b45e68b0.tar.gz
Fix a bad free() call that would occur if some #if 0'd code was used.
-rw-r--r--lib/libc/locale/wcstod.c10
1 files changed, 6 insertions, 4 deletions
diff --git a/lib/libc/locale/wcstod.c b/lib/libc/locale/wcstod.c
index 51d8727..fbbe405 100644
--- a/lib/libc/locale/wcstod.c
+++ b/lib/libc/locale/wcstod.c
@@ -46,7 +46,7 @@ wcstod(const wchar_t * __restrict nptr, wchar_t ** __restrict endptr)
static const mbstate_t initial;
mbstate_t state;
double val;
- char *buf, *end;
+ char *buf, *end, *p;
const wchar_t *wcp;
size_t clen, len;
@@ -88,12 +88,14 @@ wcstod(const wchar_t * __restrict nptr, wchar_t ** __restrict endptr)
#if 1 /* Fast, assume 1:1 WC:MBS mapping. */
*endptr = (wchar_t *)nptr + (end - buf);
(void)clen;
+ (void)p;
#else /* Slow, conservative approach. */
state = initial;
*endptr = (wchar_t *)nptr;
- while (buf < end &&
- (clen = mbrlen(buf, end - buf, &state)) > 0) {
- buf += clen;
+ p = buf;
+ while (p < end &&
+ (clen = mbrlen(p, end - p, &state)) > 0) {
+ p += clen;
(*endptr)++;
}
#endif
OpenPOWER on IntegriCloud