mirror of
https://gitlab.gnome.org/GNOME/glib.git
synced 2024-11-10 03:16: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);
|
||||
|
||||
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);
|
||||
if (application->priv->main_options)
|
||||
g_option_group_unref (application->priv->main_options);
|
||||
|
Loading…
Reference in New Issue
Block a user