From 74442a0b8c59adf110b9072ac50955f45f59130c Mon Sep 17 00:00:00 2001 From: Ignacio Casal Quinteiro Date: Thu, 4 Feb 2016 11:16:45 +0100 Subject: registrybackend: do not leak self if there are no items --- gio/gregistrysettingsbackend.c | 13 +++++-------- 1 file changed, 5 insertions(+), 8 deletions(-) diff --git a/gio/gregistrysettingsbackend.c b/gio/gregistrysettingsbackend.c index f4314ecc2..a4ddfbff2 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); } -- cgit v1.2.1