summaryrefslogtreecommitdiff
path: root/libnautilus
diff options
context:
space:
mode:
authorGene Z. Ragan <gzr@eazel.com>2000-09-14 21:31:43 +0000
committerGene Ragan <gzr@src.gnome.org>2000-09-14 21:31:43 +0000
commit86d16acc2a34b67d2b5f5c3977a54ca303da991d (patch)
treec78f4d5d5fe5b5f36fa97fd5f1b4ab8b0f5669e3 /libnautilus
parent7749bac6d34212f25544d4090d40ad5084c93cb1 (diff)
downloadnautilus-86d16acc2a34b67d2b5f5c3977a54ca303da991d.tar.gz
Fixed bug 1984, Crash when closing a window after undo operation Fixed bug
2000-09-14 Gene Z. Ragan <gzr@eazel.com> Fixed bug 1984, Crash when closing a window after undo operation Fixed bug 2151, Segfault in undo manager during quit * libnautilus/nautilus-undo-transaction.c: (remove_transaction_from_atom_targets) New function that removes transaction list from target object and frees contents. (nautilus_undo_transaction_destroy), (nautilus_undo_transaction_undo): Call new function in these places.
Diffstat (limited to 'libnautilus')
-rw-r--r--libnautilus/nautilus-undo-transaction.c16
1 files changed, 13 insertions, 3 deletions
diff --git a/libnautilus/nautilus-undo-transaction.c b/libnautilus/nautilus-undo-transaction.c
index 753d71c93..be202ea8f 100644
--- a/libnautilus/nautilus-undo-transaction.c
+++ b/libnautilus/nautilus-undo-transaction.c
@@ -199,6 +199,7 @@ nautilus_undo_transaction_initialize (NautilusUndoTransaction *transaction)
CORBA_exception_free (&ev);
}
+
static void
remove_transaction_from_object (gpointer list_data, gpointer callback_data)
{
@@ -220,6 +221,15 @@ remove_transaction_from_object (gpointer list_data, gpointer callback_data)
}
static void
+remove_transaction_from_atom_targets (NautilusUndoTransaction *transaction)
+{
+
+ g_list_foreach (transaction->atom_list,
+ remove_transaction_from_object,
+ transaction);
+}
+
+static void
nautilus_undo_transaction_destroy (GtkObject *object)
{
NautilusUndoTransaction *transaction;
@@ -227,9 +237,7 @@ nautilus_undo_transaction_destroy (GtkObject *object)
transaction = NAUTILUS_UNDO_TRANSACTION (object);
- g_list_foreach (transaction->atom_list,
- remove_transaction_from_object,
- transaction);
+ remove_transaction_from_atom_targets (transaction);
undo_atom_list_free (transaction->atom_list);
g_free (transaction->operation_name);
@@ -288,7 +296,9 @@ nautilus_undo_transaction_undo (NautilusUndoTransaction *transaction)
{
g_return_if_fail (NAUTILUS_IS_UNDO_TRANSACTION (transaction));
+ remove_transaction_from_atom_targets (transaction);
undo_atom_list_undo_and_free (transaction->atom_list);
+
transaction->atom_list = NULL;
}