From 71097ac3ef36a4aabdae1bedf11cc1018afc133d Mon Sep 17 00:00:00 2001 From: Matthias Clasen Date: Sun, 26 Sep 2004 04:16:31 +0000 Subject: [PATCH] Fix #153649, Hidetaka Iwai: 2004-09-26 Matthias Clasen 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 | 9 +++++++++ ChangeLog.pre-2-10 | 9 +++++++++ ChangeLog.pre-2-12 | 9 +++++++++ ChangeLog.pre-2-6 | 9 +++++++++ ChangeLog.pre-2-8 | 9 +++++++++ glib/goption.c | 10 +++++----- 6 files changed, 50 insertions(+), 5 deletions(-) diff --git a/ChangeLog b/ChangeLog index 5bb6138..e18ac8e 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,12 @@ +2004-09-26 Matthias Clasen + + 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 * glib/gmessages.c: [Win32] Don't ever open a console diff --git a/ChangeLog.pre-2-10 b/ChangeLog.pre-2-10 index 5bb6138..e18ac8e 100644 --- a/ChangeLog.pre-2-10 +++ b/ChangeLog.pre-2-10 @@ -1,3 +1,12 @@ +2004-09-26 Matthias Clasen + + 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 * glib/gmessages.c: [Win32] Don't ever open a console diff --git a/ChangeLog.pre-2-12 b/ChangeLog.pre-2-12 index 5bb6138..e18ac8e 100644 --- a/ChangeLog.pre-2-12 +++ b/ChangeLog.pre-2-12 @@ -1,3 +1,12 @@ +2004-09-26 Matthias Clasen + + 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 * glib/gmessages.c: [Win32] Don't ever open a console diff --git a/ChangeLog.pre-2-6 b/ChangeLog.pre-2-6 index 5bb6138..e18ac8e 100644 --- a/ChangeLog.pre-2-6 +++ b/ChangeLog.pre-2-6 @@ -1,3 +1,12 @@ +2004-09-26 Matthias Clasen + + 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 * glib/gmessages.c: [Win32] Don't ever open a console diff --git a/ChangeLog.pre-2-8 b/ChangeLog.pre-2-8 index 5bb6138..e18ac8e 100644 --- a/ChangeLog.pre-2-8 +++ b/ChangeLog.pre-2-8 @@ -1,3 +1,12 @@ +2004-09-26 Matthias Clasen + + 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 * glib/gmessages.c: [Win32] Don't ever open a console diff --git a/glib/goption.c b/glib/goption.c index 2b70730..21c7b22 100644 --- a/glib/goption.c +++ b/glib/goption.c @@ -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 (); } -- 2.7.4