mirror of
https://gitlab.gnome.org/GNOME/glib.git
synced 2024-11-02 15:46:17 +01:00
gmain: Unref child sources when finalising a GSource
If a GSource is created, *not* attached to a GMainContext, and then has child sources added, dropping the last reference to the parent GSource will leak its references to its child sources. Currently, child sources are only unreffed when g_source_destroy() is called on the parent. https://bugzilla.gnome.org/show_bug.cgi?id=737338
This commit is contained in:
parent
eaca86801e
commit
1c6df7aaeb
11
glib/gmain.c
11
glib/gmain.c
@ -2026,6 +2026,17 @@ g_source_unref_internal (GSource *source,
|
||||
|
||||
g_slist_free_full (source->priv->fds, g_free);
|
||||
|
||||
while (source->priv->child_sources)
|
||||
{
|
||||
GSource *child_source = source->priv->child_sources->data;
|
||||
|
||||
source->priv->child_sources =
|
||||
g_slist_remove (source->priv->child_sources, child_source);
|
||||
child_source->priv->parent_source = NULL;
|
||||
|
||||
g_source_unref_internal (child_source, context, have_lock);
|
||||
}
|
||||
|
||||
g_slice_free (GSourcePrivate, source->priv);
|
||||
source->priv = NULL;
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user