UTF-8 keys need to be big endian so the size bits are at the top.

pull/2270/head
nicm 2020-06-02 17:17:44 +00:00
parent 822ee4e0a6
commit 7e501f1993
1 changed files with 5 additions and 5 deletions

10
utf8.c
View File

@ -162,14 +162,14 @@ utf8_from_data(const struct utf8_data *ud, utf8_char *uc)
m.data[1] = (offset >> 8) & 0xff; m.data[1] = (offset >> 8) & 0xff;
m.data[2] = (offset >> 16); m.data[2] = (offset >> 16);
} }
*uc = m.uc; *uc = htonl(m.uc);
return (UTF8_DONE); return (UTF8_DONE);
fail: fail:
if (ud->width == 1) if (ud->width == 1)
*uc = utf8_space1.uc; *uc = htonl(utf8_space1.uc);
else else
*uc = utf8_space2.uc; *uc = htonl(utf8_space2.uc);
return (UTF8_ERROR); return (UTF8_ERROR);
} }
@ -177,7 +177,7 @@ fail:
void void
utf8_to_data(utf8_char uc, struct utf8_data *ud) utf8_to_data(utf8_char uc, struct utf8_data *ud)
{ {
union utf8_map m = { .uc = uc }; union utf8_map m = { .uc = ntohl(uc) };
struct utf8_item *ui; struct utf8_item *ui;
u_int offset; u_int offset;
@ -210,7 +210,7 @@ utf8_build_one(char c, u_int width)
if (width == 2) if (width == 2)
m.flags |= UTF8_FLAG_WIDTH2; m.flags |= UTF8_FLAG_WIDTH2;
return (m.uc); return (htonl(m.uc));
} }
/* Set a single character. */ /* Set a single character. */