@@ -253,7 +253,9 @@ _hs_text_encode_utf8(uint8_t **destp, const uint16_t *src, size_t srcoff,
253 *dest++ = c;
253 *dest++ = c;
254 *dest++ = d;
254 *dest++ = d;
256− else if ((w & 0xF800F800F800F800ULL) == 0) {
256+ else if (!(w & 0xF800F800F800F800ULL) && (w & 0xFF80000000000000ULL) &&
257+ (w & 0x0000FF8000000000ULL) && (w & 0x00000000FF800000ULL) &&
258+ (w & 0x000000000000FF80ULL)) {
257 *dest++ = (a >> 6) | 0xC0;
259 *dest++ = (a >> 6) | 0xC0;
258 *dest++ = (a & 0x3f) | 0x80;
260 *dest++ = (a & 0x3f) | 0x80;
259 *dest++ = (b >> 6) | 0xC0;
261 *dest++ = (b >> 6) | 0xC0;
@@ -277,7 +279,7 @@ _hs_text_encode_utf8(uint8_t **destp, const uint16_t *src, size_t srcoff,
277 *dest++ = a;
279 *dest++ = a;
278 *dest++ = b;
280 *dest++ = b;
280− else if ((w & 0xF800F800) == 0) {
282+ else if (!(w & 0xF800F800) && (w & 0xFF800000) && (w & 0x0000FF80)) {
281 *dest++ = (a >> 6) | 0xC0;
283 *dest++ = (a >> 6) | 0xC0;
282 *dest++ = (a & 0x3f) | 0x80;
284 *dest++ = (a & 0x3f) | 0x80;
283 *dest++ = (b >> 6) | 0xC0;
285 *dest++ = (b >> 6) | 0xC0;