scc

simple c99 compiler
git clone git://git.simple-cc.org/scc
Log | Files | Refs | Submodules | README | LICENSE

commit e9aa55d151f5f6ac49cba1d519c3b357fb710ccd
parent 67eb502477c70b9d84d0615c1a4ea169fb1c6b84
Author: Roberto E. Vargas Caballero <k0ga@shike2.com>
Date:   Sat,  5 Nov 2022 11:42:45 +0100

libc/stdlib: Simplify mbtowc()

Diffstat:
Msrc/libc/stdlib/mbtowc.c | 6++++--
1 file changed, 4 insertions(+), 2 deletions(-)

diff --git a/src/libc/stdlib/mbtowc.c b/src/libc/stdlib/mbtowc.c @@ -8,7 +8,7 @@ mbtowc(wchar_t *restrict pwc, const char *restrict s, size_t n) unsigned char *t = (unsigned char *) s; unsigned long wc; unsigned c; - size_t len; + size_t i, len; if (s == NULL) return 0; @@ -21,10 +21,12 @@ mbtowc(wchar_t *restrict pwc, const char *restrict s, size_t n) if (len == 0) goto return_code; - for (wc = (c & 0xFF) >> len; len--; wc |= c & 0x3F) { + wc = (c & 0xFF) >> len; + for (i = 0; i < len-1; i++) { if (((c = *t++) & 0xC0) != 0x80) return -1; wc <<= 6; + wc |= c & 0x3F; } return_code: