Fix #153649, Hidetaka Iwai:
authorMatthias Clasen <mclasen@redhat.com>
Sun, 26 Sep 2004 04:16:31 +0000 (04:16 +0000)
committerMatthias Clasen <matthiasc@src.gnome.org>
Sun, 26 Sep 2004 04:16:31 +0000 (04:16 +0000)
2004-09-26  Matthias Clasen  <mclasen@redhat.com>

Fix #153649, Hidetaka Iwai:

* glib/goption.c (parse_long_option): Don't forget to set parsed
to TRUE when parsing a long ARG_NONE option.
(free_changes_list): Fix the memory management for string
and filename arrays.

ChangeLog
ChangeLog.pre-2-10
ChangeLog.pre-2-12
ChangeLog.pre-2-6
ChangeLog.pre-2-8
glib/goption.c

index 5bb6138..e18ac8e 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,12 @@
+2004-09-26  Matthias Clasen  <mclasen@redhat.com>
+
+       Fix #153649, Hidetaka Iwai:
+       
+       * glib/goption.c (parse_long_option): Don't forget to set parsed
+       to TRUE when parsing a long ARG_NONE option. 
+       (free_changes_list): Fix the memory management for string
+       and filename arrays.
+
 2004-09-22  Tor Lillqvist  <tml@iki.fi>
 
        * glib/gmessages.c: [Win32] Don't ever open a console
index 5bb6138..e18ac8e 100644 (file)
@@ -1,3 +1,12 @@
+2004-09-26  Matthias Clasen  <mclasen@redhat.com>
+
+       Fix #153649, Hidetaka Iwai:
+       
+       * glib/goption.c (parse_long_option): Don't forget to set parsed
+       to TRUE when parsing a long ARG_NONE option. 
+       (free_changes_list): Fix the memory management for string
+       and filename arrays.
+
 2004-09-22  Tor Lillqvist  <tml@iki.fi>
 
        * glib/gmessages.c: [Win32] Don't ever open a console
index 5bb6138..e18ac8e 100644 (file)
@@ -1,3 +1,12 @@
+2004-09-26  Matthias Clasen  <mclasen@redhat.com>
+
+       Fix #153649, Hidetaka Iwai:
+       
+       * glib/goption.c (parse_long_option): Don't forget to set parsed
+       to TRUE when parsing a long ARG_NONE option. 
+       (free_changes_list): Fix the memory management for string
+       and filename arrays.
+
 2004-09-22  Tor Lillqvist  <tml@iki.fi>
 
        * glib/gmessages.c: [Win32] Don't ever open a console
index 5bb6138..e18ac8e 100644 (file)
@@ -1,3 +1,12 @@
+2004-09-26  Matthias Clasen  <mclasen@redhat.com>
+
+       Fix #153649, Hidetaka Iwai:
+       
+       * glib/goption.c (parse_long_option): Don't forget to set parsed
+       to TRUE when parsing a long ARG_NONE option. 
+       (free_changes_list): Fix the memory management for string
+       and filename arrays.
+
 2004-09-22  Tor Lillqvist  <tml@iki.fi>
 
        * glib/gmessages.c: [Win32] Don't ever open a console
index 5bb6138..e18ac8e 100644 (file)
@@ -1,3 +1,12 @@
+2004-09-26  Matthias Clasen  <mclasen@redhat.com>
+
+       Fix #153649, Hidetaka Iwai:
+       
+       * glib/goption.c (parse_long_option): Don't forget to set parsed
+       to TRUE when parsing a long ARG_NONE option. 
+       (free_changes_list): Fix the memory management for string
+       and filename arrays.
+
 2004-09-22  Tor Lillqvist  <tml@iki.fi>
 
        * glib/gmessages.c: [Win32] Don't ever open a console
index 2b70730..21c7b22 100644 (file)
@@ -587,8 +587,8 @@ parse_arg (GOptionContext *context,
                             entry->arg_data);
        change->prev.integer = *(gint *)entry->arg_data;
        *(gint *)entry->arg_data = data;
+       break;
       }
-      break;
     case G_OPTION_ARG_CALLBACK:
       {
        gchar *tmp;
@@ -700,6 +700,7 @@ parse_long_option (GOptionContext *context,
                     NULL, NULL, error);
          
          add_pending_null (context, &((*argv)[*index]), NULL);
+         *parsed = TRUE;
        }
       else
        {
@@ -753,10 +754,6 @@ free_changes_list (GOptionContext *context,
 
       if (revert)
        {
-         /* Free any allocated data */
-         g_free (change->allocated.str);
-         g_strfreev (change->allocated.array.data);
-         
          switch (change->arg_type)
            {
            case G_OPTION_ARG_NONE:
@@ -767,11 +764,14 @@ free_changes_list (GOptionContext *context,
              break;
            case G_OPTION_ARG_STRING:
            case G_OPTION_ARG_FILENAME:
+              g_free (change->allocated.str);
              *(gchar **)change->arg_data = change->prev.str;
              break;
            case G_OPTION_ARG_STRING_ARRAY:
            case G_OPTION_ARG_FILENAME_ARRAY:
+             g_strfreev (change->allocated.array.data);
              *(gchar ***)change->arg_data = change->prev.array;
+             break;
            default:
              g_assert_not_reached ();
            }