GOption: fix bug in strv mode
authorRyan Lortie <desrt@desrt.ca>
Wed, 5 Feb 2014 17:11:50 +0000 (17:11 +0000)
committerRyan Lortie <desrt@desrt.ca>
Thu, 6 Feb 2014 12:02:53 +0000 (12:02 +0000)
We are a bit too aggressive about freeing memory in strv mode.  Only
free it in the case that we actually set the pointer to NULL.

Uncovered by the GApplication tests.

glib/goption.c

index f017892..da04596 100644 (file)
@@ -1717,9 +1717,6 @@ free_pending_nulls (GOptionContext *context,
 
       if (perform_nulls)
         {
-          if (context->strv_mode)
-            g_free (*n->ptr);
-
           if (n->value)
             {
               /* Copy back the short options */
@@ -1727,7 +1724,12 @@ free_pending_nulls (GOptionContext *context,
               strcpy (*n->ptr + 1, n->value);
             }
           else
-            *n->ptr = NULL;
+            {
+              if (context->strv_mode)
+                g_free (*n->ptr);
+
+              *n->ptr = NULL;
+            }
         }
 
       g_free (n->value);