From fb9e890653143bd0a34e66cd492c1258ec62cc31 Mon Sep 17 00:00:00 2001 From: axeldaguerre Date: Tue, 30 Jan 2024 17:52:19 +0100 Subject: [PATCH] fix utf8 encoding missing one bit shift For Unicode code point in the highest range, 1 bit shift operation on the 4th byte is missing, giving a wrong encoding --- src/base/base_string.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/base/base_string.c b/src/base/base_string.c index 41df6577..4959dbb7 100644 --- a/src/base/base_string.c +++ b/src/base/base_string.c @@ -1306,7 +1306,7 @@ utf8_encode(U8 *str, U32 codepoint){ inc = 3; } else if (codepoint <= 0x10FFFF){ - str[0] = (bitmask4 << 3) | ((codepoint >> 18) & bitmask3); + str[0] = (bitmask4 << 4) | ((codepoint >> 18) & bitmask3); str[1] = bit8 | ((codepoint >> 12) & bitmask6); str[2] = bit8 | ((codepoint >> 6) & bitmask6); str[3] = bit8 | ( codepoint & bitmask6);