diff --git a/composed.c b/composed.c index f969c8f1..442325ea 100644 --- a/composed.c +++ b/composed.c @@ -20,14 +20,14 @@ composed_lookup(struct composed *root, uint32_t key) return NULL; } -uint32_t +void composed_insert(struct composed **root, struct composed *node) { node->left = node->right = NULL; if (*root == NULL) { *root = node; - return node->key; + return; } uint32_t key = node->key; @@ -36,10 +36,7 @@ composed_insert(struct composed **root, struct composed *node) struct composed *n = *root; while (n != NULL) { - if (n->key == node->key) { - /* TODO: wrap around at (CELL_COMB_CHARS_HI - CELL_COMB_CHARS_LO) */ - key++; - } + xassert(n->key != node->key); prev = n; n = key < n->key ? n->left : n->right; @@ -48,9 +45,6 @@ composed_insert(struct composed **root, struct composed *node) xassert(prev != NULL); xassert(n == NULL); - /* May have been changed */ - node->key = key; - if (key < prev->key) { xassert(prev->left == NULL); prev->left = node; @@ -58,8 +52,6 @@ composed_insert(struct composed **root, struct composed *node) xassert(prev->right == NULL); prev->right = node; } - - return key; } void diff --git a/composed.h b/composed.h index 3511ad30..faed22f7 100644 --- a/composed.h +++ b/composed.h @@ -13,6 +13,6 @@ struct composed { }; struct composed *composed_lookup(struct composed *root, uint32_t key); -uint32_t composed_insert(struct composed **root, struct composed *node); +void composed_insert(struct composed **root, struct composed *node); void composed_free(struct composed *root); diff --git a/vt.c b/vt.c index 94bd6685..7c77f7ec 100644 --- a/vt.c +++ b/vt.c @@ -761,11 +761,13 @@ action_utf8_print(struct terminal *term, wchar_t wc) new_cc->width = grapheme_width; term->composed_count++; - key = composed_insert(&term->composed, new_cc); - wc = CELL_COMB_CHARS_LO + key; - xassert(wc <= CELL_COMB_CHARS_HI); + composed_insert(&term->composed, new_cc); + wc = CELL_COMB_CHARS_LO + key; width = grapheme_width; + + xassert(wc >= CELL_COMB_CHARS_LO); + xassert(wc <= CELL_COMB_CHARS_HI); goto out; } }