@@ -245,8 +245,21 @@ _hs_text_encode_utf8(uint8_t **destp, const uint16_t *src, size_t srcoff,
245 while (srcend - src >= 4) {
245 while (srcend - src >= 4) {
246 uint64_t w = *((uint64_t *) src);
246 uint64_t w = *((uint64_t *) src);
248− if (w & 0xFF80FF80FF80FF80ULL)
248+ if (w & 0xFF80FF80FF80FF80ULL) {
249+ if (!(w & 0x000000000000FF80ULL)) {
250+ *dest++ = w & 0xFFFF;
252+ if (!(w & 0x00000000FF800000ULL)) {
253+ *dest++ = (w >> 16) & 0xFFFF;
255+ if (!(w & 0x0000FF8000000000ULL)) {
256+ *dest++ = (w >> 32) & 0xFFFF;
250 *dest++ = w & 0xFFFF;
263 *dest++ = w & 0xFFFF;
251 *dest++ = (w >> 16) & 0xFFFF;
264 *dest++ = (w >> 16) & 0xFFFF;
252 *dest++ = (w >> 32) & 0xFFFF;
265 *dest++ = (w >> 32) & 0xFFFF;