composetable: Parse hex escapes too
This was a small omission from the Compose file syntax that doesn't cost us much to support. Add a test for this syntax too. Fixes: #1004
This commit is contained in:
@@ -113,6 +113,22 @@ parse_compose_value (GtkComposeData *compose_data,
|
||||
else if (p[1] >= '0' && p[1] < '8')
|
||||
{
|
||||
ch = g_ascii_strtoll (p + 1, &endp, 8);
|
||||
if (ch == 0)
|
||||
{
|
||||
g_warning ("Invalid escape sequence: %s: %s", val, line);
|
||||
goto fail;
|
||||
}
|
||||
g_string_append_unichar (value, ch);
|
||||
p = endp;
|
||||
}
|
||||
else if (p[1] == 'x' || p[1] == 'X')
|
||||
{
|
||||
ch = g_ascii_strtoll (p + 2, &endp, 16);
|
||||
if (ch == 0)
|
||||
{
|
||||
g_warning ("Invalid escape sequence: %s: %s", val, line);
|
||||
goto fail;
|
||||
}
|
||||
g_string_append_unichar (value, ch);
|
||||
p = endp;
|
||||
}
|
||||
|
||||
1
testsuite/gtk/compose/hex
Normal file
1
testsuite/gtk/compose/hex
Normal file
@@ -0,0 +1 @@
|
||||
<Multi_key> <s> <e> <q> : "\x23fe\X23F3"
|
||||
3
testsuite/gtk/compose/hex.expected
Normal file
3
testsuite/gtk/compose/hex.expected
Normal file
@@ -0,0 +1,3 @@
|
||||
# n_seqs: 1
|
||||
# max_seq_len: 4
|
||||
<Uff20> <U73> <U65> <U71> : "⏾⏳"
|
||||
@@ -308,6 +308,7 @@ main (int argc, char *argv[])
|
||||
g_test_add_data_func ("/compose-table/basic", "basic", compose_table_compare);
|
||||
g_test_add_data_func ("/compose-table/long", "long", compose_table_compare);
|
||||
g_test_add_data_func ("/compose-table/octal", "octal", compose_table_compare);
|
||||
g_test_add_data_func ("/compose-table/hex", "hex", compose_table_compare);
|
||||
g_test_add_data_func ("/compose-table/codepoint", "codepoint", compose_table_compare);
|
||||
g_test_add_data_func ("/compose-table/multi", "multi", compose_table_compare);
|
||||
g_test_add_data_func ("/compose-table/strings", "strings", compose_table_compare);
|
||||
|
||||
Reference in New Issue
Block a user