From e487df31e196609546d72d1f9a420aeb109c8d09 Mon Sep 17 00:00:00 2001 From: Philip Withnall Date: Tue, 17 Jul 2018 12:14:36 +0200 Subject: [PATCH] gvariant: Fix some memory leaks on error paths Coverity CID: #1393955 Signed-off-by: Philip Withnall --- glib/gvariant.c | 22 ++++++++++++++-------- 1 file changed, 14 insertions(+), 8 deletions(-) diff --git a/glib/gvariant.c b/glib/gvariant.c index 6a9b37c9a..4dbce8c60 100644 --- a/glib/gvariant.c +++ b/glib/gvariant.c @@ -4738,10 +4738,13 @@ g_variant_valist_new_nnp (const gchar **str, type = g_variant_type_element (type); if G_UNLIKELY (!g_variant_type_is_subtype_of (type, (GVariantType *) *str)) - g_error ("g_variant_new: expected GVariantBuilder array element " - "type '%s' but the built value has element type '%s'", - g_variant_type_dup_string ((GVariantType *) *str), - g_variant_get_type_string (value) + 1); + { + gchar *type_string = g_variant_type_dup_string ((GVariantType *) *str); + g_error ("g_variant_new: expected GVariantBuilder array element " + "type '%s' but the built value has element type '%s'", + type_string, g_variant_get_type_string (value) + 1); + g_free (type_string); + } g_variant_type_string_scan (*str, NULL, str); @@ -4803,10 +4806,13 @@ g_variant_valist_new_nnp (const gchar **str, case '@': if G_UNLIKELY (!g_variant_is_of_type (ptr, (GVariantType *) *str)) - g_error ("g_variant_new: expected GVariant of type '%s' but " - "received value has type '%s'", - g_variant_type_dup_string ((GVariantType *) *str), - g_variant_get_type_string (ptr)); + { + gchar *type_string = g_variant_type_dup_string ((GVariantType *) *str); + g_error ("g_variant_new: expected GVariant of type '%s' but " + "received value has type '%s'", + type_string, g_variant_get_type_string (ptr)); + g_free (type_string); + } g_variant_type_string_scan (*str, NULL, str);