gnome-session r4883 - in branches/dbus_based: . gnome-session



Author: mccann
Date: Tue Jul 29 22:02:49 2008
New Revision: 4883
URL: http://svn.gnome.org/viewvc/gnome-session?rev=4883&view=rev

Log:
2008-07-29  William Jon McCann  <jmccann redhat com>

	* gnome-session/gsm-inhibit-dialog.c (on_store_inhibitor_added),
	(on_store_inhibitor_removed), (setup_dialog):
	* gnome-session/gsm-store.c (gsm_store_remove):
	Fix double free.



Modified:
   branches/dbus_based/ChangeLog
   branches/dbus_based/gnome-session/gsm-inhibit-dialog.c
   branches/dbus_based/gnome-session/gsm-store.c

Modified: branches/dbus_based/gnome-session/gsm-inhibit-dialog.c
==============================================================================
--- branches/dbus_based/gnome-session/gsm-inhibit-dialog.c	(original)
+++ branches/dbus_based/gnome-session/gsm-inhibit-dialog.c	Tue Jul 29 22:02:49 2008
@@ -634,6 +634,10 @@
 
         g_debug ("GsmInhibitDialog: inhibitor added: %s", id);
 
+        if (dialog->priv->is_done) {
+                return;
+        }
+
         inhibitor = gsm_store_lookup (store, id);
 
         /* Add to model */
@@ -653,6 +657,10 @@
 
         g_debug ("GsmInhibitDialog: inhibitor removed: %s", id);
 
+        if (dialog->priv->is_done) {
+                return;
+        }
+
         /* Remove from model */
         if (find_inhibitor (dialog, id, &iter)) {
                 gtk_list_store_remove (dialog->priv->list_store, &iter);
@@ -660,8 +668,7 @@
         }
 
         /* if there are no inhibitors left then trigger response */
-        if (! gtk_tree_model_get_iter_first (GTK_TREE_MODEL (dialog->priv->list_store), &iter)
-            && ! dialog->priv->is_done) {
+        if (! gtk_tree_model_get_iter_first (GTK_TREE_MODEL (dialog->priv->list_store), &iter)) {
                 gtk_dialog_response (GTK_DIALOG (dialog), GTK_RESPONSE_ACCEPT);
         }
 }
@@ -845,7 +852,7 @@
                                                        GDK_TYPE_PIXBUF,
                                                        G_TYPE_STRING,
                                                        G_TYPE_STRING,
-                                                       G_TYPE_UINT);
+                                                       G_TYPE_STRING);
 
         treeview = glade_xml_get_widget (dialog->priv->xml, "inhibitors-treeview");
         gtk_tree_view_set_headers_visible (GTK_TREE_VIEW (treeview), FALSE);

Modified: branches/dbus_based/gnome-session/gsm-store.c
==============================================================================
--- branches/dbus_based/gnome-session/gsm-store.c	(original)
+++ branches/dbus_based/gnome-session/gsm-store.c	Tue Jul 29 22:02:49 2008
@@ -82,6 +82,7 @@
 {
         GObject *found;
         gboolean removed;
+        char    *id_copy;
 
         g_return_val_if_fail (store != NULL, FALSE);
 
@@ -90,14 +91,17 @@
                 return FALSE;
         }
 
+        id_copy = g_strdup (id);
+
         g_object_ref (found);
 
-        removed = g_hash_table_remove (store->priv->objects, id);
+        removed = g_hash_table_remove (store->priv->objects, id_copy);
         g_assert (removed);
 
-        g_signal_emit (store, signals [REMOVED], 0, id);
+        g_signal_emit (store, signals [REMOVED], 0, id_copy);
 
         g_object_unref (found);
+        g_free (id_copy);
 
         return TRUE;
 }



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