[glib] registrybackend: do not leak self if there are no items



commit 74442a0b8c59adf110b9072ac50955f45f59130c
Author: Ignacio Casal Quinteiro <icq gnome org>
Date:   Thu Feb 4 11:16:45 2016 +0100

    registrybackend: do not leak self if there are no items

 gio/gregistrysettingsbackend.c |   13 +++++--------
 1 files changed, 5 insertions(+), 8 deletions(-)
---
diff --git a/gio/gregistrysettingsbackend.c b/gio/gregistrysettingsbackend.c
index f4314ec..a4ddfbf 100644
--- a/gio/gregistrysettingsbackend.c
+++ b/gio/gregistrysettingsbackend.c
@@ -1732,10 +1732,8 @@ watch_thread_function (LPVOID parameter)
            * likely to block (only when changing notification subscriptions).
            */
           event = g_slice_new (RegistryEvent);
-
-          event->self = G_REGISTRY_BACKEND (self->owner);
-          g_object_ref (self->owner);
-
+          event->self = g_object_ref (self->owner);
+          event->prefix = g_strdup (prefix);
           event->items = g_ptr_array_new_with_free_func (g_free);
 
           EnterCriticalSection (G_REGISTRY_BACKEND (self->owner)->cache_lock);
@@ -1744,12 +1742,11 @@ watch_thread_function (LPVOID parameter)
           LeaveCriticalSection (G_REGISTRY_BACKEND (self->owner)->cache_lock);
 
           if (event->items->len > 0)
-            {
-              event->prefix = g_strdup (prefix);
-              g_idle_add ((GSourceFunc) watch_handler, event);
-            }
+            g_idle_add ((GSourceFunc) watch_handler, event);
           else
             {
+              g_object_unref (event->self);
+              g_free (event->prefix);
               g_ptr_array_free (event->items, TRUE);
               g_slice_free (RegistryEvent, event);
             }


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]