gvariant: Never break out of g_variant_iter_loop
authorStef Walter <stefw@collabora.co.uk>
Mon, 14 Nov 2011 17:03:47 +0000 (18:03 +0100)
committerStef Walter <stefw@collabora.co.uk>
Mon, 2 Jan 2012 17:34:08 +0000 (18:34 +0100)
 * Document how to break out of g_variant_iter_loop style loops.

https://bugzilla.gnome.org/show_bug.cgi?id=664069

glib/gvariant.c

index 5a4d43b..22341ff 100644 (file)
@@ -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 <link linkend='gvariant-format-strings'>GVariant
  * Format Strings</link>.
  *
@@ -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 *<!-- -->/
  *       }
  *   }
  *  </programlisting>