mirror of
https://gitlab.gnome.org/GNOME/glib.git
synced 2025-01-23 04:36:17 +01:00
gapplication: remove inactivity_timeout source on finalize
The event source used to handle inactivity_timeout doesn't hold a reference on the application. Therefore, it is possible for callback function of the event source to run after the application has been freed, leading to use-after-free problem. To avoid the problem, we should remove the event source before the application is freed. This should fix SIGBUS crash of gio/tests/gapplication on FreeBSD. https://gitlab.gnome.org/GNOME/glib/issues/1846#note_566550
This commit is contained in:
parent
517f756acf
commit
0ed8605079
@ -1373,6 +1373,9 @@ g_application_finalize (GObject *object)
|
|||||||
{
|
{
|
||||||
GApplication *application = G_APPLICATION (object);
|
GApplication *application = G_APPLICATION (object);
|
||||||
|
|
||||||
|
if (application->priv->inactivity_timeout_id)
|
||||||
|
g_source_remove (application->priv->inactivity_timeout_id);
|
||||||
|
|
||||||
g_slist_free_full (application->priv->option_groups, (GDestroyNotify) g_option_group_unref);
|
g_slist_free_full (application->priv->option_groups, (GDestroyNotify) g_option_group_unref);
|
||||||
if (application->priv->main_options)
|
if (application->priv->main_options)
|
||||||
g_option_group_unref (application->priv->main_options);
|
g_option_group_unref (application->priv->main_options);
|
||||||
|
Loading…
Reference in New Issue
Block a user