diff options
-rw-r--r-- | ChangeLog | 11 | ||||
-rw-r--r-- | libnautilus-private/nautilus-bookmark.c | 12 |
2 files changed, 20 insertions, 3 deletions
@@ -2,6 +2,17 @@ Merged from trunk: + * libnautilus-private/nautilus-bookmark.c: + (bookmark_file_changed_callback): + Don't immediately recreate NautilusFile for the + bookmark when the file is deleted, as this can + cause loops if the file is monitored. + See https://bugzilla.redhat.com/show_bug.cgi?id=465479 + +2008-10-17 Alexander Larsson <alexl@redhat.com> + + Merged from trunk: + * src/nautilus-window-manage-views.c (nautilus_window_slot_open_location_full): Don't unref NULL, which can happen if !do_load_location diff --git a/libnautilus-private/nautilus-bookmark.c b/libnautilus-private/nautilus-bookmark.c index f7ad47bed..361857573 100644 --- a/libnautilus-private/nautilus-bookmark.c +++ b/libnautilus-private/nautilus-bookmark.c @@ -391,13 +391,19 @@ bookmark_file_changed_callback (NautilusFile *file, NautilusBookmark *bookmark) if (nautilus_file_is_gone (file) || nautilus_file_is_in_trash (file)) { /* The file we were monitoring has been trashed, deleted, - * or moved in a way that we didn't notice. Make + * or moved in a way that we didn't notice. We should make * a spanking new NautilusFile object for this * location so if a new file appears in this place - * we will notice. + * we will notice. However, we can't immediately do so + * because creating a new NautilusFile directly as a result + * of noticing a file goes away may trigger i/o on that file + * again, noticeing it is gone, leading to a loop. + * So, the new NautilusFile is created when the bookmark + * is used again. However, this is not really a problem, as + * we don't want to change the icon or anything about the + * bookmark just because its not there anymore. */ nautilus_bookmark_disconnect_file (bookmark); - should_emit_appearance_changed_signal = TRUE; } else if (nautilus_bookmark_update_icon (bookmark)) { /* File hasn't gone away, but it has changed * in a way that affected its icon. |