mirror of
https://gitlab.gnome.org/GNOME/glib.git
synced 2024-12-26 15:36:14 +01:00
registrybackend: do not leak self if there are no items
This commit is contained in:
parent
dc97bb9b9b
commit
74442a0b8c
@ -1732,10 +1732,8 @@ watch_thread_function (LPVOID parameter)
|
|||||||
* likely to block (only when changing notification subscriptions).
|
* likely to block (only when changing notification subscriptions).
|
||||||
*/
|
*/
|
||||||
event = g_slice_new (RegistryEvent);
|
event = g_slice_new (RegistryEvent);
|
||||||
|
event->self = g_object_ref (self->owner);
|
||||||
event->self = G_REGISTRY_BACKEND (self->owner);
|
event->prefix = g_strdup (prefix);
|
||||||
g_object_ref (self->owner);
|
|
||||||
|
|
||||||
event->items = g_ptr_array_new_with_free_func (g_free);
|
event->items = g_ptr_array_new_with_free_func (g_free);
|
||||||
|
|
||||||
EnterCriticalSection (G_REGISTRY_BACKEND (self->owner)->cache_lock);
|
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);
|
LeaveCriticalSection (G_REGISTRY_BACKEND (self->owner)->cache_lock);
|
||||||
|
|
||||||
if (event->items->len > 0)
|
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
|
else
|
||||||
{
|
{
|
||||||
|
g_object_unref (event->self);
|
||||||
|
g_free (event->prefix);
|
||||||
g_ptr_array_free (event->items, TRUE);
|
g_ptr_array_free (event->items, TRUE);
|
||||||
g_slice_free (RegistryEvent, event);
|
g_slice_free (RegistryEvent, event);
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user