summaryrefslogtreecommitdiff
path: root/0001-imcontext-Fix-a-regression-in-Compose-file-parsing.patch
diff options
context:
space:
mode:
Diffstat (limited to '0001-imcontext-Fix-a-regression-in-Compose-file-parsing.patch')
-rw-r--r--0001-imcontext-Fix-a-regression-in-Compose-file-parsing.patch78
1 files changed, 78 insertions, 0 deletions
diff --git a/0001-imcontext-Fix-a-regression-in-Compose-file-parsing.patch b/0001-imcontext-Fix-a-regression-in-Compose-file-parsing.patch
new file mode 100644
index 0000000..04614a4
--- /dev/null
+++ b/0001-imcontext-Fix-a-regression-in-Compose-file-parsing.patch
@@ -0,0 +1,78 @@
+From 22960c5c20cf5a2d4666645f259d376784a11331 Mon Sep 17 00:00:00 2001
+From: Matthias Clasen <mclasen@redhat.com>
+Date: Sun, 14 Feb 2021 11:54:05 -0500
+Subject: [PATCH 1/3] imcontext: Fix a regression in Compose file parsing
+
+We accidentally dropped the handing of # comments.
+Bring it back.
+
+Fixes: #3664
+---
+ gtk/gtkcomposetable.c | 30 ++++++++++++++++++++----------
+ 1 file changed, 20 insertions(+), 10 deletions(-)
+
+diff --git a/gtk/gtkcomposetable.c b/gtk/gtkcomposetable.c
+index 95cb16f9b8..f8657d2660 100644
+--- a/gtk/gtkcomposetable.c
++++ b/gtk/gtkcomposetable.c
+@@ -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:
+--
+2.29.2
+
bgstack15