diff options
author | Gene Z. Ragan <gzr@eazel.com> | 2000-09-14 21:31:43 +0000 |
---|---|---|
committer | Gene Ragan <gzr@src.gnome.org> | 2000-09-14 21:31:43 +0000 |
commit | 86d16acc2a34b67d2b5f5c3977a54ca303da991d (patch) | |
tree | c78f4d5d5fe5b5f36fa97fd5f1b4ab8b0f5669e3 /libnautilus | |
parent | 7749bac6d34212f25544d4090d40ad5084c93cb1 (diff) | |
download | nautilus-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.c | 16 |
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; } |