From: Stef Walter Date: Mon, 14 Nov 2011 17:03:47 +0000 (+0100) Subject: gvariant: Never break out of g_variant_iter_loop X-Git-Tag: 2.31.8~38 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=411259ddd3e6b5c5fbf900d7ab38d0d4da03f156;p=platform%2Fupstream%2Fglib.git gvariant: Never break out of g_variant_iter_loop * Document how to break out of g_variant_iter_loop style loops. https://bugzilla.gnome.org/show_bug.cgi?id=664069 --- diff --git a/glib/gvariant.c b/glib/gvariant.c index 5a4d43b..22341ff 100644 --- a/glib/gvariant.c +++ b/glib/gvariant.c @@ -4872,6 +4872,10 @@ g_variant_iter_next (GVariantIter *iter, * function and g_variant_iter_next() or g_variant_iter_next_value() on * the same iterator causes undefined behavior. * + * If you break out of a such a while loop using g_variant_iter_loop() then + * you must free or unreference all the unpacked values as you would with + * g_variant_get(). Failure to do so will cause a memory leak. + * * See the section on GVariant * Format Strings. * @@ -4893,6 +4897,7 @@ g_variant_iter_next (GVariantIter *iter, * g_variant_get_type_string (value)); * * /* no need to free 'key' and 'value' here */ + * /* unless breaking out of this loop */ * } * } *