[glib] Be more careful about overwriting errors



commit 9574dbd2282e1fcf7bb5836c85cfff536bf4a7cf
Author: Matthias Clasen <mclasen redhat com>
Date:   Sun Oct 31 20:58:15 2010 -0400

    Be more careful about overwriting errors
    
    When trying to parse again, we don't want to overwrite the exiting
    error.

 gio/gsettings-tool.c |    7 ++++---
 1 files changed, 4 insertions(+), 3 deletions(-)
---
diff --git a/gio/gsettings-tool.c b/gio/gsettings-tool.c
index e461925..a7447ae 100644
--- a/gio/gsettings-tool.c
+++ b/gio/gsettings-tool.c
@@ -399,7 +399,6 @@ gsettings_set (GSettings   *settings,
   existing = g_settings_get_value (settings, key);
   type = g_variant_get_type (existing);
 
-parse:
   new = g_variant_parse (type, value, NULL, NULL, &error);
 
   /* A common error is to specify a string with single quotes
@@ -409,10 +408,12 @@ parse:
    * To handle this case, try to parse again with an extra level
    * of quotes.
    */
-  if (new == NULL && !freeme && strstr (error->message, "unknown keyword"))
+  if (new == NULL && strstr (error->message, "unknown keyword"))
     {
       value = freeme = g_strdup_printf ("\"%s\"", value);
-      goto parse;
+      new = g_variant_parse (type, value, NULL, NULL, NULL);
+      if (new != NULL)
+        g_clear_error (&error);
     }
 
   if (new == NULL)



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