gtk3/0001-imcontext-Fix-a-regression-in-Compose-file-parsing.patch
DistroBaker 4d6dde2047 Merged update from upstream sources
This is an automated DistroBaker update from upstream sources.
If you do not know what this is about or would like to opt out,
contact the OSCI team.

Source: https://src.fedoraproject.org/rpms/gtk3.git#febf1243e6516130dedd6323b899c36ff7fd659b
2021-02-15 21:55:24 +00:00

79 lines
1.9 KiB
Diff

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