From e0de5ed915f779eaefac7267a54f3aa49837a0bc Mon Sep 17 00:00:00 2001 From: =?utf8?q?Tim-Philipp=20M=C3=BCller?= Date: Mon, 23 May 2016 18:00:30 +0100 Subject: [PATCH] iterator: only unset GValue if it was inited And add some function guards. From GLib 2.48 on it is allowed to pass an uninitialised GValue to g_value_unset(). https://bugzilla.gnome.org/show_bug.cgi?id=763762 --- gst/gstiterator.c | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/gst/gstiterator.c b/gst/gstiterator.c index 77f0c02..b15b202 100644 --- a/gst/gstiterator.c +++ b/gst/gstiterator.c @@ -607,6 +607,8 @@ gst_iterator_fold (GstIterator * it, GstIteratorFoldFunction func, GValue item = { 0, }; GstIteratorResult result; + g_return_val_if_fail (it != NULL, GST_ITERATOR_ERROR); + while (1) { result = gst_iterator_next (it, &item); switch (result) { @@ -625,7 +627,13 @@ gst_iterator_fold (GstIterator * it, GstIteratorFoldFunction func, } fold_done: + +#if GLIB_CHECK_VERSION (2, 48, 0) g_value_unset (&item); +#else + if (item.g_type != 0) + g_value_unset (&item); +#endif return result; } -- 2.7.4