[Patch] nautilus crash #135727
- From: Vijaykumar Patwari <vijaykumar patwari wipro com>
- To: nautilus-list gnome org
- Subject: [Patch] nautilus crash #135727
- Date: Tue, 22 Mar 2005 13:41:32 +0530
Hi All,
Synopsis
--------
Crash when switching to catalog view repeatedly.
This bug is specific to 2.6 branch and not applicable to current sources.
Analysis and Solution
---------------------
Basically it looks to be a timing issue for the out processess which are
embeded onto nautilus. For ex: Image Collection View and Catalog View.
This bug is only visible switching from `Image collection view` to
`Catalog view`.
Looks like Bonobo `ui_events` are being addressed after the existing
content_view widget is being destroyed. Instead, these events are to be
processed at very initial stage or in other words, before destroying the
existing view i.e window->content_view. I'm not very sure why this is
happens, but the attached patch looks to be a way to avoid these type of
situations.
This patch basically avoids any usage of `window->content_view` if its
not having the appropriate value or already destroyed (as in current case).
Bugzilla bug: http://bugzilla.gnome.org/show_bug.cgi?id=135727.
Kindly have a look at the attached patch.
Thanks & Regards
vijay.
--- nautilus/ChangeLog 2004-06-26 02:02:04.000000000 +0530
+++ nautilus-new/ChangeLog 2005-03-22 10:35:34.854254416 +0530
@@ -1,3 +1,11 @@
+2005-03-22 Vijaykumar Patwari <vijaykumar patwari wipro com>
+
+ * src/nautilus-window.c: (real_set_content_view_widget):
+ Set content_view to NULL and then free the location.
+ * src/nautilus-window-manage-views.c: (nautilus_window_set_content_view):
+ Return if content_view is NULL.
+ Fixes bug #135727.
+
2004-06-25 Sebastien Bacher <seb128 debian org>
* libnautilus-private/nautilus-icon-container.c:
--- nautilus/src/nautilus-window.c 2004-05-26 10:44:23.000000000 +0530
+++ nautilus-new/src/nautilus-window.c 2005-03-22 10:29:38.465433752 +0530
@@ -1239,8 +1239,10 @@ real_set_content_view_widget (NautilusWi
}
if (window->content_view != NULL) {
- gtk_object_destroy (GTK_OBJECT (window->content_view));
+ NautilusViewFrame *temp = window->content_view;
window->content_view = NULL;
+ gtk_object_destroy (GTK_OBJECT (temp));
+ temp = NULL;
}
if (new_view != NULL) {
--- nautilus/src/nautilus-window-manage-views.c 2004-06-02 00:58:26.000000000 +0530
+++ nautilus-new/src/nautilus-window-manage-views.c 2005-03-22 10:29:24.041626504 +0530
@@ -1598,6 +1598,7 @@ nautilus_window_set_content_view (Nautil
g_return_if_fail (NAUTILUS_IS_WINDOW (window));
g_return_if_fail (window->details->location != NULL);
+ g_return_if_fail (window->content_view != NULL);
g_return_if_fail (id != NULL);
if (nautilus_window_content_view_matches_iid (window, id->iid)) {
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]