Only compare the actual size of the UTF-8 character, not all of it.

pull/3709/head
nicm 2023-09-01 18:43:54 +00:00
parent f78279bb2e
commit 579829eef2
1 changed files with 3 additions and 3 deletions

View File

@ -962,7 +962,7 @@ utf8_combined_first_cmp(struct utf8_combined_first *uf1,
return (-1);
if (ud1->size > ud2->size)
return (1);
return (memcmp(ud1->data, ud2->data, sizeof *ud1->data));
return (memcmp(ud1->data, ud2->data, ud1->size));
}
RB_HEAD(utf8_combined_tree, utf8_combined_first);
RB_GENERATE_STATIC(utf8_combined_tree, utf8_combined_first, entry,
@ -979,7 +979,7 @@ utf8_combined_second_cmp(const void *vp1, const void *vp2)
return (-1);
if (ud1->size > ud2->size)
return (1);
return (memcmp(ud1->data, ud2->data, sizeof *ud1->data));
return (memcmp(ud1->data, ud2->data, ud1->size));
}
static int
@ -1035,7 +1035,7 @@ utf8_build_combined(void)
wc = utf8_combined_table[i].first;
mlen = wctomb(first.data, wc);
if (mlen <= 0 || mlen > UTF8_SIZE) {
log_debug("invalid combined character %08X", wc);
log_debug("invalid combined character %05X", wc);
continue;
}
first.size = mlen;