[gnome-settings-daemon] color: Fix potential crasher
- From: Bastien Nocera <hadess src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-settings-daemon] color: Fix potential crasher
- Date: Thu, 27 Sep 2012 08:43:42 +0000 (UTC)
commit ed81228607fbc690a9202af7e6c03f8d73e90f2b
Author: Bastien Nocera <hadess hadess net>
Date: Fri Sep 21 16:53:04 2012 +0200
color: Fix potential crasher
If a GFileMonitor event occurs whilst we're stopping the color
plugin, it's possible that the file events will try to poke at things
at it shouldn't.
https://bugzilla.gnome.org/show_bug.cgi?id=663710
plugins/color/gsd-color-manager.c | 28 +++++++++++++++++-----------
1 files changed, 17 insertions(+), 11 deletions(-)
---
diff --git a/plugins/color/gsd-color-manager.c b/plugins/color/gsd-color-manager.c
index a92b3d1..999b88c 100644
--- a/plugins/color/gsd-color-manager.c
+++ b/plugins/color/gsd-color-manager.c
@@ -1715,6 +1715,15 @@ void
gsd_color_manager_stop (GsdColorManager *manager)
{
g_debug ("Stopping color manager");
+
+ g_clear_object (&manager->priv->settings);
+ g_clear_object (&manager->priv->client);
+ g_clear_object (&manager->priv->profile_store);
+ g_clear_object (&manager->priv->dmi);
+ g_clear_object (&manager->priv->session);
+ g_clear_pointer (&manager->priv->edid_cache, g_hash_table_destroy);
+ g_clear_pointer (&manager->priv->device_assign_hash, g_hash_table_destroy);
+ g_clear_object (&manager->priv->x11_screen);
}
static void
@@ -2306,17 +2315,14 @@ gsd_color_manager_finalize (GObject *object)
manager = GSD_COLOR_MANAGER (object);
- g_return_if_fail (manager->priv != NULL);
-
- g_object_unref (manager->priv->settings);
- g_object_unref (manager->priv->client);
- g_object_unref (manager->priv->profile_store);
- g_object_unref (manager->priv->dmi);
- g_object_unref (manager->priv->session);
- g_hash_table_destroy (manager->priv->edid_cache);
- g_hash_table_destroy (manager->priv->device_assign_hash);
- if (manager->priv->x11_screen != NULL)
- g_object_unref (manager->priv->x11_screen);
+ g_clear_object (&manager->priv->settings);
+ g_clear_object (&manager->priv->client);
+ g_clear_object (&manager->priv->profile_store);
+ g_clear_object (&manager->priv->dmi);
+ g_clear_object (&manager->priv->session);
+ g_clear_pointer (&manager->priv->edid_cache, g_hash_table_destroy);
+ g_clear_pointer (&manager->priv->device_assign_hash, g_hash_table_destroy);
+ g_clear_object (&manager->priv->x11_screen);
G_OBJECT_CLASS (gsd_color_manager_parent_class)->finalize (object);
}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]