sync code with last improvements from OpenBSD

This commit is contained in:
purplerain 2023-09-02 04:20:23 +00:00
parent 81d24aa0e0
commit 361861c7dd
Signed by: purplerain
GPG key ID: F42C07F07E2E35B7
8 changed files with 257 additions and 85 deletions

View file

@ -1,4 +1,4 @@
/* $OpenBSD: utf8-combined.c,v 1.1 2023/09/01 14:29:11 nicm Exp $ */
/* $OpenBSD: utf8-combined.c,v 1.2 2023/09/01 18:43:54 nicm Exp $ */
/*
* Copyright (c) 2023 Nicholas Marriott <nicholas.marriott@gmail.com>
@ -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;