[gnome-settings-daemon] various: Don't unref null objects in _stop()



commit b9c73d7e1d5a9c9dc350dcd751e54e757c7a1dcf
Author: William Jon McCann <jmccann redhat com>
Date:   Mon Nov 22 22:43:23 2010 -0500

    various: Don't unref null objects in _stop()
    
    WTF people let's try not to be so sloppy.

 plugins/a11y-keyboard/gsd-a11y-keyboard-manager.c |    6 +-
 plugins/gconf/gsd-gconf-manager.c                 |  162 +++++++++++----------
 plugins/keybindings/gsd-keybindings-manager.c     |   13 +-
 plugins/mouse/gsd-mouse-manager.c                 |   12 +-
 plugins/sound/gsd-sound-manager.c                 |    8 +-
 plugins/xsettings/gsd-xsettings-manager.c         |   18 ++-
 6 files changed, 120 insertions(+), 99 deletions(-)
---
diff --git a/plugins/a11y-keyboard/gsd-a11y-keyboard-manager.c b/plugins/a11y-keyboard/gsd-a11y-keyboard-manager.c
index e665d00..733efd2 100644
--- a/plugins/a11y-keyboard/gsd-a11y-keyboard-manager.c
+++ b/plugins/a11y-keyboard/gsd-a11y-keyboard-manager.c
@@ -1021,8 +1021,10 @@ gsd_a11y_keyboard_manager_stop (GsdA11yKeyboardManager *manager)
         if (p->status_icon)
                 gtk_status_icon_set_visible (p->status_icon, FALSE);
 
-        g_object_unref (p->settings);
-        p->settings = NULL;
+        if (p->settings != NULL) {
+                g_object_unref (p->settings);
+                p->settings = NULL;
+        }
 
         gdk_window_remove_filter (NULL,
                                   (GdkFilterFunc) cb_xkb_event_filter,
diff --git a/plugins/gconf/gsd-gconf-manager.c b/plugins/gconf/gsd-gconf-manager.c
index ac78e56..f5c87ab 100644
--- a/plugins/gconf/gsd-gconf-manager.c
+++ b/plugins/gconf/gsd-gconf-manager.c
@@ -25,7 +25,7 @@
 #define GSD_GCONF_MANAGER_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), GSD_TYPE_GCONF_MANAGER, GsdGconfManagerPrivate))
 
 struct GsdGconfManagerPrivate {
-	GHashTable *conf_watchers;
+        GHashTable *conf_watchers;
 };
 
 GsdGconfManager *manager_object = NULL;
@@ -35,113 +35,115 @@ G_DEFINE_TYPE(GsdGconfManager, gsd_gconf_manager, G_TYPE_OBJECT)
 static void
 gsd_gconf_manager_finalize (GObject *object)
 {
-	GsdGconfManager *manager = GSD_GCONF_MANAGER (object);
+        GsdGconfManager *manager = GSD_GCONF_MANAGER (object);
 
-	g_return_if_fail (manager->priv != NULL);
+        g_return_if_fail (manager->priv != NULL);
 
-	if (manager->priv->conf_watchers != NULL)
-		g_hash_table_destroy (manager->priv->conf_watchers);
+        if (manager->priv->conf_watchers != NULL)
+                g_hash_table_destroy (manager->priv->conf_watchers);
 
-	G_OBJECT_CLASS (gsd_gconf_manager_parent_class)->finalize (object);
+        G_OBJECT_CLASS (gsd_gconf_manager_parent_class)->finalize (object);
 }
 
 static void
 gsd_gconf_manager_class_init (GsdGconfManagerClass *klass)
 {
-	GObjectClass *object_class = G_OBJECT_CLASS (klass);
+        GObjectClass *object_class = G_OBJECT_CLASS (klass);
 
-	object_class->finalize = gsd_gconf_manager_finalize;
+        object_class->finalize = gsd_gconf_manager_finalize;
 
-	g_type_class_add_private (klass, sizeof (GsdGconfManagerPrivate));
+        g_type_class_add_private (klass, sizeof (GsdGconfManagerPrivate));
 }
 
 static void
 gsd_gconf_manager_init (GsdGconfManager *manager)
 {
-	manager->priv = GSD_GCONF_MANAGER_GET_PRIVATE (manager);
+        manager->priv = GSD_GCONF_MANAGER_GET_PRIVATE (manager);
 }
 
 GsdGconfManager *
 gsd_gconf_manager_new (void)
 {
-	if (manager_object != NULL) {
-		g_object_ref (manager_object);
-	} else {
-		manager_object = g_object_new (GSD_TYPE_GCONF_MANAGER, NULL);
-		g_object_add_weak_pointer ((gpointer) manager_object,
-					   (gpointer *) &manager_object);
-	}
-
-	return manager_object;
+        if (manager_object != NULL) {
+                g_object_ref (manager_object);
+        } else {
+                manager_object = g_object_new (GSD_TYPE_GCONF_MANAGER, NULL);
+                g_object_add_weak_pointer ((gpointer) manager_object,
+                                           (gpointer *) &manager_object);
+        }
+
+        return manager_object;
 }
 
 gboolean
 gsd_gconf_manager_start (GsdGconfManager *manager, GError **error)
 {
-	GDir *convertdir;
-	gboolean result = FALSE;
-
-	manager->priv->conf_watchers = g_hash_table_new_full (g_str_hash, g_str_equal, g_free, g_object_unref);
-
-	/* Read all conversion files from GCONF_SETTINGS_CONVERTDIR */
-	convertdir = g_dir_open (GCONF_SETTINGS_CONVERTDIR, 0, error);
-	if (convertdir) {
-		const gchar *filename;
-
-		while ((filename = g_dir_read_name (convertdir))) {
-			gchar *path, **groups;
-			gsize group_len, i;
-			GKeyFile *key_file = g_key_file_new ();
-
-			path = g_build_filename (GCONF_SETTINGS_CONVERTDIR, filename, NULL);
-			if (!g_key_file_load_from_file (key_file, path, G_KEY_FILE_NONE, error)) {
-				g_free (path);
-				g_key_file_free (key_file);
-				result = FALSE;
-				break;
-			}
-
-			/* Load the groups in the file */
-			groups = g_key_file_get_groups (key_file, &group_len);
-			for (i = 0; i < group_len; i++) {
-				gchar **keys;
-				gsize key_len, j;
-				GHashTable *keys_hash = NULL;
-
-				keys = g_key_file_get_keys (key_file, groups[i], &key_len, error);
-				for (j = 0; j < key_len; j++) {
-					if (keys_hash == NULL)
-						keys_hash = g_hash_table_new_full (g_str_hash, g_str_equal, g_free, g_free);
-
-					g_hash_table_insert (keys_hash, g_strdup (keys[j]),
-							     g_strdup (g_key_file_get_value (key_file, groups[i], keys[j], error)));
-				}
-
-				g_strfreev (keys);
-
-				if (keys_hash != NULL) {
-					g_hash_table_insert (manager->priv->conf_watchers,
-							     g_strdup (groups[i]),
-							     conf_watcher_new (groups[i], keys_hash));
-				}
-			}
-
-			/* Free all memory */
-			g_free (path);
-			g_strfreev (groups);
-
-			result = TRUE;
-		}
-
-		g_dir_close (convertdir);
-	}
-
-	return result;
+        GDir *convertdir;
+        gboolean result = FALSE;
+
+        manager->priv->conf_watchers = g_hash_table_new_full (g_str_hash, g_str_equal, g_free, g_object_unref);
+
+        /* Read all conversion files from GCONF_SETTINGS_CONVERTDIR */
+        convertdir = g_dir_open (GCONF_SETTINGS_CONVERTDIR, 0, error);
+        if (convertdir) {
+                const gchar *filename;
+
+                while ((filename = g_dir_read_name (convertdir))) {
+                        gchar *path, **groups;
+                        gsize group_len, i;
+                        GKeyFile *key_file = g_key_file_new ();
+
+                        path = g_build_filename (GCONF_SETTINGS_CONVERTDIR, filename, NULL);
+                        if (!g_key_file_load_from_file (key_file, path, G_KEY_FILE_NONE, error)) {
+                                g_free (path);
+                                g_key_file_free (key_file);
+                                result = FALSE;
+                                break;
+                        }
+
+                        /* Load the groups in the file */
+                        groups = g_key_file_get_groups (key_file, &group_len);
+                        for (i = 0; i < group_len; i++) {
+                                gchar **keys;
+                                gsize key_len, j;
+                                GHashTable *keys_hash = NULL;
+
+                                keys = g_key_file_get_keys (key_file, groups[i], &key_len, error);
+                                for (j = 0; j < key_len; j++) {
+                                        if (keys_hash == NULL)
+                                                keys_hash = g_hash_table_new_full (g_str_hash, g_str_equal, g_free, g_free);
+
+                                        g_hash_table_insert (keys_hash, g_strdup (keys[j]),
+                                                             g_strdup (g_key_file_get_value (key_file, groups[i], keys[j], error)));
+                                }
+
+                                g_strfreev (keys);
+
+                                if (keys_hash != NULL) {
+                                        g_hash_table_insert (manager->priv->conf_watchers,
+                                                             g_strdup (groups[i]),
+                                                             conf_watcher_new (groups[i], keys_hash));
+                                }
+                        }
+
+                        /* Free all memory */
+                        g_free (path);
+                        g_strfreev (groups);
+
+                        result = TRUE;
+                }
+
+                g_dir_close (convertdir);
+        }
+
+        return result;
 }
 
 void
 gsd_gconf_manager_stop (GsdGconfManager *manager)
 {
-	g_hash_table_destroy (manager->priv->conf_watchers);
-	manager->priv->conf_watchers = NULL;
+        if (manager->priv->conf_watchers != NULL) {
+                g_hash_table_destroy (manager->priv->conf_watchers);
+                manager->priv->conf_watchers = NULL;
+        }
 }
diff --git a/plugins/keybindings/gsd-keybindings-manager.c b/plugins/keybindings/gsd-keybindings-manager.c
index 5cad7d6..3d5435e 100644
--- a/plugins/keybindings/gsd-keybindings-manager.c
+++ b/plugins/keybindings/gsd-keybindings-manager.c
@@ -630,8 +630,10 @@ gsd_keybindings_manager_stop (GsdKeybindingsManager *manager)
 
         binding_unregister_keys (manager);
 
-        g_slist_free (p->screens);
-        p->screens = NULL;
+        if (p->screens != NULL) {
+                g_slist_free (p->screens);
+                p->screens = NULL;
+        }
 
         for (l = p->binding_list; l; l = l->next) {
                 Binding *b = l->data;
@@ -642,8 +644,11 @@ gsd_keybindings_manager_stop (GsdKeybindingsManager *manager)
                 g_free (b->key.keycodes);
                 g_free (b);
         }
-        g_slist_free (p->binding_list);
-        p->binding_list = NULL;
+
+        if (p->binding_list != NULL) {
+                g_slist_free (p->binding_list);
+                p->binding_list = NULL;
+        }
 }
 
 static void
diff --git a/plugins/mouse/gsd-mouse-manager.c b/plugins/mouse/gsd-mouse-manager.c
index 685b703..4ee0bd1 100644
--- a/plugins/mouse/gsd-mouse-manager.c
+++ b/plugins/mouse/gsd-mouse-manager.c
@@ -1030,11 +1030,15 @@ gsd_mouse_manager_stop (GsdMouseManager *manager)
                 p->device_manager = NULL;
         }
 
-        g_object_unref (p->mouse_settings);
-        p->mouse_settings = NULL;
+        if (p->mouse_settings != NULL) {
+                g_object_unref (p->mouse_settings);
+                p->mouse_settings = NULL;
+        }
 
-        g_object_unref (p->touchpad_settings);
-        p->touchpad_settings = NULL;
+        if (p->touchpad_settings != NULL) {
+                g_object_unref (p->touchpad_settings);
+                p->touchpad_settings = NULL;
+        }
 
         set_locate_pointer (manager, FALSE);
 }
diff --git a/plugins/sound/gsd-sound-manager.c b/plugins/sound/gsd-sound-manager.c
index 221418c..85ebade 100644
--- a/plugins/sound/gsd-sound-manager.c
+++ b/plugins/sound/gsd-sound-manager.c
@@ -316,10 +316,10 @@ gsd_sound_manager_stop (GsdSoundManager *manager)
         g_debug ("Stopping sound manager");
 
 #ifdef HAVE_PULSE
-	if (manager->priv->settings != NULL) {
-		g_object_unref (manager->priv->settings);
-		manager->priv->settings = NULL;
-	}
+        if (manager->priv->settings != NULL) {
+                g_object_unref (manager->priv->settings);
+                manager->priv->settings = NULL;
+        }
 
         if (manager->priv->timeout) {
                 g_source_remove (manager->priv->timeout);
diff --git a/plugins/xsettings/gsd-xsettings-manager.c b/plugins/xsettings/gsd-xsettings-manager.c
index ccc9bfd..91c09f8 100644
--- a/plugins/xsettings/gsd-xsettings-manager.c
+++ b/plugins/xsettings/gsd-xsettings-manager.c
@@ -751,14 +751,22 @@ gnome_xsettings_manager_stop (GnomeXSettingsManager *manager)
                 p->managers = NULL;
         }
 
-        g_object_unref (manager->priv->plugin_settings);
+        if (p->plugin_settings != NULL) {
+                g_object_unref (p->plugin_settings);
+                p->plugin_settings = NULL;
+        }
+
         stop_fontconfig_monitor (manager);
 
-        g_hash_table_destroy (p->settings);
-        p->settings = NULL;
+        if (p->settings != NULL) {
+                g_hash_table_destroy (p->settings);
+                p->settings = NULL;
+        }
 
-        g_object_unref (p->gtk);
-        p->gtk = NULL;
+        if (p->gtk != NULL) {
+                g_object_unref (p->gtk);
+                p->gtk = NULL;
+        }
 }
 
 static void



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]