summaryrefslogtreecommitdiff
path: root/gio/gregistrysettingsbackend.c
diff options
context:
space:
mode:
Diffstat (limited to 'gio/gregistrysettingsbackend.c')
-rw-r--r--gio/gregistrysettingsbackend.c13
1 files 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);
}