From adc4b20487c53bf751d34cdbb010850d277f0d32 Mon Sep 17 00:00:00 2001
From: George Kiagiadakis <george.kiagiadakis@collabora.com>
Date: Mon, 4 May 2020 18:03:53 +0300
Subject: [PATCH] session-bin: improve iterator

---
 lib/wp/session-bin.c | 20 ++++++++++----------
 1 file changed, 10 insertions(+), 10 deletions(-)

diff --git a/lib/wp/session-bin.c b/lib/wp/session-bin.c
index 30d77b37..a84ceae1 100644
--- a/lib/wp/session-bin.c
+++ b/lib/wp/session-bin.c
@@ -148,24 +148,24 @@ static gboolean
 wp_session_bin_iterator_next (WpIterator *iterator, GValue *item)
 {
   WpSessionBinIterator *self = wp_iterator_get_user_data (iterator);
-  WpSessionBinPrivate *bin_priv = wp_session_bin_get_instance_private (self->bin);
-  if (self->index >= bin_priv->items->len)
-    return FALSE;
+  WpSessionBinPrivate *priv = wp_session_bin_get_instance_private (self->bin);
+
+  g_return_val_if_fail (item, FALSE);
 
-  if (item) {
-    g_value_init (item, G_TYPE_OBJECT);
-    g_value_set_object (item,
-        g_ptr_array_index (bin_priv->items, self->index++));
+  if (self->index < priv->items->len) {
+    g_value_init_from_instance (item,
+        g_ptr_array_index (priv->items, self->index++));
+    return TRUE;
   }
 
-  return TRUE;
+  return FALSE;
 }
 
 static void
 wp_session_bin_iterator_finalize (WpIterator *iterator)
 {
   WpSessionBinIterator *self = wp_iterator_get_user_data (iterator);
-  self->bin = NULL;
+  g_clear_object (&self->bin);
 }
 
 /**
@@ -190,7 +190,7 @@ wp_session_bin_iterate (WpSessionBin *self)
   WpIterator *ret = wp_iterator_new (&methods, sizeof (WpSessionBinIterator));
   WpSessionBinIterator *it = wp_iterator_get_user_data (ret);
 
-  it->bin = self;
+  it->bin = g_object_ref (self);
 
   return ret;
 }
-- 
GitLab