From a6615ba859e8723888e108e2af390e5645dfa761 Mon Sep 17 00:00:00 2001 From: Matthias Clasen Date: Thu, 10 Mar 2011 23:27:49 -0500 Subject: [PATCH] Fix cleanup in g_markup_collect Patch by Matt Barnes, https://bugzilla.gnome.org/show_bug.cgi?id=644428 --- glib/gmarkup.c | 35 ++++++++++++++++------------------- 1 file changed, 16 insertions(+), 19 deletions(-) diff --git a/glib/gmarkup.c b/glib/gmarkup.c index ccdb500..609b88d 100644 --- a/glib/gmarkup.c +++ b/glib/gmarkup.c @@ -2794,33 +2794,30 @@ failure: ptr = va_arg (ap, gpointer); - if (ptr == NULL) - continue; - - switch (type & (G_MARKUP_COLLECT_OPTIONAL - 1)) + if (ptr != NULL) { - case G_MARKUP_COLLECT_STRDUP: - if (written) - g_free (*(char **) ptr); + switch (type & (G_MARKUP_COLLECT_OPTIONAL - 1)) + { + case G_MARKUP_COLLECT_STRDUP: + if (written) + g_free (*(char **) ptr); - case G_MARKUP_COLLECT_STRING: - *(char **) ptr = NULL; - break; + case G_MARKUP_COLLECT_STRING: + *(char **) ptr = NULL; + break; - case G_MARKUP_COLLECT_BOOLEAN: - *(gboolean *) ptr = FALSE; - break; + case G_MARKUP_COLLECT_BOOLEAN: + *(gboolean *) ptr = FALSE; + break; - case G_MARKUP_COLLECT_TRISTATE: - *(gboolean *) ptr = -1; - break; + case G_MARKUP_COLLECT_TRISTATE: + *(gboolean *) ptr = -1; + break; + } } type = va_arg (ap, GMarkupCollectType); attr = va_arg (ap, const char *); - - if (written) - written--; } va_end (ap); -- 2.7.4