From 0b49b59c40489feae11430ccff125b4499159db5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A9mi=20Denis-Courmont?= <remi@remlab.net> Date: Sun, 7 Feb 2010 11:40:41 +0200 Subject: [PATCH] IsUTF8: use clz --- src/text/unicode.c | 11 +++-------- 1 file changed, 3 insertions(+), 8 deletions(-) diff --git a/src/text/unicode.c b/src/text/unicode.c index 5487e250b717..1c0501a1db38 100644 --- a/src/text/unicode.c +++ b/src/text/unicode.c @@ -286,25 +286,20 @@ static char *CheckUTF8( char *str, char rep ) for (;;) { uint8_t c = ptr[0]; - int charlen = -1; if (c == '\0') break; - for (int i = 0; i < 7; i++) - if ((c >> (7 - i)) == ((0xff >> (7 - i)) ^ 1)) - { - charlen = i; - break; - } + if (c > 0xF4) + goto error; + int charlen = clz8 (c ^ 0xFF); switch (charlen) { case 0: // 7-bit ASCII character -> OK ptr++; continue; - case -1: // 1111111x -> error case 1: // continuation byte -> error goto error; } -- GitLab