Only compare the actual size of the UTF-8 character, not all of it.
authornicm <nicm@openbsd.org>
Fri, 1 Sep 2023 18:43:54 +0000 (18:43 +0000)
committernicm <nicm@openbsd.org>
Fri, 1 Sep 2023 18:43:54 +0000 (18:43 +0000)
usr.bin/tmux/utf8-combined.c

index c1bdb69..18dffbf 100644 (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;