From: Martin Kühl Date: Tue, 21 Sep 2021 14:56:47 +0000 (+0200) Subject: gtkcomposetable: Accept long replacement strings X-Git-Tag: archive/raspbian/4.4.1+ds1-2+rpi1^2~18^2^2~22 X-Git-Url: https://dgit.raspbian.org/?a=commitdiff_plain;h=0476b5a34ce4b83dfac20b2f8f3ab8a844365091;p=gtk4.git gtkcomposetable: Accept long replacement strings This change removes the assertions limiting replacement strings in the compose table to be less than 20 characters. The limit seems arbitrary, is not required, will break some users' setups, and problems with it result in applications not launching. Fixes #4273 --- diff --git a/gtk/gtkcomposetable.c b/gtk/gtkcomposetable.c index 6495163d88..e7ed9d7474 100644 --- a/gtk/gtkcomposetable.c +++ b/gtk/gtkcomposetable.c @@ -936,8 +936,6 @@ parser_get_compose_table (GtkComposeParser *parser) } else { - g_assert (strlen (value) < 20); - if (char_data->len > 0) g_string_append_c (char_data, 0); @@ -1437,7 +1435,6 @@ gtk_compose_table_foreach (const GtkComposeTable *table, int char_offset = encoded_value & ~(1 << 15); g_assert (char_offset < table->n_chars); value = &table->char_data[char_offset]; - g_assert (strlen (value) < 20); } else { diff --git a/testsuite/gtk/compose/long b/testsuite/gtk/compose/long index 84ef7acee8..1e57ea7b76 100644 --- a/testsuite/gtk/compose/long +++ b/testsuite/gtk/compose/long @@ -1 +1,2 @@ : "🧀" + : "the mooore you knooow 💫" diff --git a/testsuite/gtk/compose/long.expected b/testsuite/gtk/compose/long.expected index 0846c7f6e9..ec7035d1db 100644 --- a/testsuite/gtk/compose/long.expected +++ b/testsuite/gtk/compose/long.expected @@ -1,6 +1,7 @@ -# n_sequences: 1 +# n_sequences: 2 # max_seq_len: 11 # n_index_size: 1 -# data_size: 23 -# n_chars: 5 +# data_size: 28 +# n_chars: 32 + : "the mooore you knooow 💫" : "🧀" # U1f9c0 diff --git a/testsuite/gtk/compose/match b/testsuite/gtk/compose/match index 0554ac02c2..1cb4e74cf5 100644 --- a/testsuite/gtk/compose/match +++ b/testsuite/gtk/compose/match @@ -1,3 +1,4 @@ : "!" : "?" : "🥂" + : "this is a long replacement string" diff --git a/testsuite/gtk/compose/match.expected b/testsuite/gtk/compose/match.expected index bed10c5a10..a82e7cecbf 100644 --- a/testsuite/gtk/compose/match.expected +++ b/testsuite/gtk/compose/match.expected @@ -1,8 +1,9 @@ -# n_sequences: 3 +# n_sequences: 4 # max_seq_len: 7 # n_index_size: 1 -# data_size: 24 -# n_chars: 5 +# data_size: 29 +# n_chars: 39 : "!" # U21 + : "this is a long replacement string" : "?" # U3f : "🥂" # U1f942 diff --git a/testsuite/gtk/composetable.c b/testsuite/gtk/composetable.c index 564416ceb8..baa83e961d 100644 --- a/testsuite/gtk/composetable.c +++ b/testsuite/gtk/composetable.c @@ -229,6 +229,19 @@ compose_table_match (void) g_assert_true (match); g_assert_cmpstr (output->str, ==, "?"); + g_string_set_size (output, 0); + + buffer[0] = GDK_KEY_Multi_key; + buffer[1] = GDK_KEY_l; + buffer[2] = GDK_KEY_o; + buffer[3] = GDK_KEY_n; + buffer[4] = GDK_KEY_g; + ret = gtk_compose_table_check (table, buffer, 5, &finish, &match, output); + g_assert_true (ret); + g_assert_true (finish); + g_assert_true (match); + g_assert_cmpstr (output->str, ==, "this is a long replacement string"); + g_string_free (output, TRUE); g_free (file); }