[gtk/fix-compose-comments-for-3] imcontext: Fix a regression in Compose file parsing




commit 22960c5c20cf5a2d4666645f259d376784a11331
Author: Matthias Clasen <mclasen redhat com>
Date:   Sun Feb 14 11:54:05 2021 -0500

    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:


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]