imcontext: Fix a regression in Compose file parsing

We accidentally dropped the handing of # comments.
Bring it back. Test included.

Fixes: #3664
This commit is contained in:
Matthias Clasen 2021-02-14 11:54:05 -05:00
parent 5d6792137d
commit f15aa2f3e5
3 changed files with 29 additions and 10 deletions

View File

@ -77,28 +77,40 @@ parse_compose_value (GtkComposeData *compose_data,
const char *val,
const char *line)
{
char *word;
const char *p;
gsize len;
GString *value;
gunichar ch;
char *endp;
len = strlen (val);
if (val[0] != '"' || val[len - 1] != '"')
if (val[0] != '"')
{
g_warning ("Need to double-quote the value: %s: %s", val, line);
goto fail;
}
word = g_strndup (val + 1, len - 2);
value = g_string_new ("");
p = word;
p = val + 1;
while (*p)
{
if (*p == '\\')
if (*p == '\0')
{
g_warning ("Missing closing '\"': %s: %s", val, line);
goto fail;
}
else if (*p == '\"')
{
p++;
while (*p && g_ascii_isspace (*p))
p++;
if (*p != '\0' && *p != '#')
{
g_warning ("Garbage after closing '\"': %s: %s", val, line);
goto fail;
}
break;
}
else if (*p == '\\')
{
if (p[1] == '"')
{
@ -148,8 +160,6 @@ parse_compose_value (GtkComposeData *compose_data,
compose_data->value = g_string_free (value, FALSE);
g_free (word);
return TRUE;
fail:

View File

@ -0,0 +1,4 @@
<Multi_key> <a> : "a" # just an a
<Multi_key> <b> : "#" # not an a
# this line is ignored
<Multi_key> <c> : "a" # wild and wilder: "@!$#

View File

@ -0,0 +1,5 @@
# n_seqs: 3
# max_seq_len: 2
<Uff20> <U61> : "a" # U61
<Uff20> <U62> : "#" # U23
<Uff20> <U63> : "a" # U61