From f3210cbf27c79ed4294f85271476c6433446102f Mon Sep 17 00:00:00 2001 From: alois31 <36605164+alois31@users.noreply.github.com> Date: Mon, 15 May 2023 14:23:16 +0200 Subject: compose: drop the 65535 node limit (#343) In commit 1638409b22aef33d487863876ab214b949db4984, the number of compose nodes was limited to 65535 to enable "future optimizations", which apparently means slightly reduced memory usage due to fitting in a uint16_t. At this time, it was mentioned that the author was not aware of "any compose files which come close". However, I'm one of the users that actually do require a larger number of nodes for their compose file. Thus, use a uint32_t again and raise the limit significantly. --- src/compose/table.h | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) (limited to 'src/compose/table.h') diff --git a/src/compose/table.h b/src/compose/table.h index 6be4348..825a8e2 100644 --- a/src/compose/table.h +++ b/src/compose/table.h @@ -75,16 +75,17 @@ * \0 is so offset 0 points to an empty string). */ -/* Fits in uint16_t, also a good idea to have some limit. */ -#define MAX_COMPOSE_NODES 65535 +/* 7 nodes for every potential Unicode character and then some should be + * enough for all purposes. */ +#define MAX_COMPOSE_NODES (1 << 23) struct compose_node { xkb_keysym_t keysym; /* Offset into xkb_compose_table::nodes or 0. */ - uint16_t lokid; + uint32_t lokid; /* Offset into xkb_compose_table::nodes or 0. */ - uint16_t hikid; + uint32_t hikid; union { struct { @@ -95,7 +96,7 @@ struct compose_node { uint32_t _pad:31; bool is_leaf:1; /* Offset into xkb_compose_table::nodes or 0. */ - uint16_t eqkid; + uint32_t eqkid; } internal; struct { /* Offset into xkb_compose_table::utf8. */ -- cgit v1.2.1