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