From: Ryan Lortie Date: Fri, 5 Mar 2010 11:09:38 +0000 (-0500) Subject: GVariant: fix some refcounting issues X-Git-Tag: 2.23.5~31 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=118d59ba15324b49ab9f8b61332364148102d3fd;p=platform%2Fupstream%2Fglib.git GVariant: fix some refcounting issues --- diff --git a/glib/gvariant.c b/glib/gvariant.c index 00a16da..4cb6220 100644 --- a/glib/gvariant.c +++ b/glib/gvariant.c @@ -676,6 +676,8 @@ g_variant_new_variant (GVariant *value) { g_return_val_if_fail (value != NULL, NULL); + g_variant_ref_sink (value); + return g_variant_new_from_children (G_VARIANT_TYPE_VARIANT, g_memdup (&value, sizeof value), 1, g_variant_is_trusted (value)); @@ -1172,11 +1174,11 @@ g_variant_new_strv (const gchar * const *strv, g_return_val_if_fail (length == 0 || strv != NULL, NULL); if (length < 0) - for (length = 0; strv[length]; length++); + length = g_strv_length ((gchar **) strv); strings = g_new (GVariant *, length); for (i = 0; i < length; i++) - strings[i] = g_variant_new_string (strv[i]); + strings[i] = g_variant_ref_sink (g_variant_new_string (strv[i])); return g_variant_new_from_children (G_VARIANT_TYPE ("as"), strings, length, TRUE); @@ -1561,6 +1563,7 @@ g_variant_print_string (GVariant *value, element = g_variant_get_child_value (value, i); g_variant_print_string (element, string, type_annotate); g_string_append (string, ", "); + g_variant_unref (element); } /* for >1 item: remove final ", "