diff options
author | Ramiro Estrugo <ramiro@src.gnome.org> | 2000-05-09 00:40:23 +0000 |
---|---|---|
committer | Ramiro Estrugo <ramiro@src.gnome.org> | 2000-05-09 00:40:23 +0000 |
commit | c0ed560dddb9cc83dd6a6201c0f9f5f86787b824 (patch) | |
tree | 0da0d92d92b1eb3b7d823a9ba18b6cfced1481a6 /libnautilus/nautilus-clipboard.c | |
parent | 6329071a4aad05dd92e40f0c398a63cc9ad12d97 (diff) | |
download | nautilus-c0ed560dddb9cc83dd6a6201c0f9f5f86787b824.tar.gz |
Reference the view on set_view_frame() and unreference on
destruction. This fixes a problem where the clipboard code was
trying to use a view that has already been trashed.
Thanks to Carbamide <linuxfan@ionet.net> for finding the problem.
Diffstat (limited to 'libnautilus/nautilus-clipboard.c')
-rw-r--r-- | libnautilus/nautilus-clipboard.c | 15 |
1 files changed, 14 insertions, 1 deletions
diff --git a/libnautilus/nautilus-clipboard.c b/libnautilus/nautilus-clipboard.c index e985a0e78..86bf1da79 100644 --- a/libnautilus/nautilus-clipboard.c +++ b/libnautilus/nautilus-clipboard.c @@ -110,9 +110,14 @@ nautilus_clipboard_info_initialize_class (NautilusClipboardInfoClass *klass) void nautilus_clipboard_info_destroy (NautilusClipboardInfo *info) { - + g_free (info->details->component_name); gtk_widget_unref (info->details->clipboard_owner); + + if (info->details->view != NULL) { + bonobo_object_unref (BONOBO_OBJECT (info->details->view)); + } + g_free (info->details); NAUTILUS_CALL_PARENT_CLASS (GTK_OBJECT_CLASS, destroy, (GTK_OBJECT (info))); @@ -163,7 +168,15 @@ nautilus_clipboard_info_get_clipboard_owner (NautilusClipboardInfo *info) void nautilus_clipboard_info_set_view_frame (NautilusClipboardInfo *info, NautilusViewFrame *view) { + g_return_if_fail (info != NULL); + g_return_if_fail (NAUTILUS_CLIPBOARD_INFO (info)); + g_return_if_fail (view != NULL); + g_return_if_fail (NAUTILUS_IS_VIEW_FRAME (view)); + + bonobo_object_ref (BONOBO_OBJECT (view)); + info->details->view = view; + } NautilusViewFrame* |