diff --git a/gtk/gtkfilechooserdefault.c b/gtk/gtkfilechooserdefault.c index a128e1d397..f0c108fdfa 100644 --- a/gtk/gtkfilechooserdefault.c +++ b/gtk/gtkfilechooserdefault.c @@ -2719,11 +2719,16 @@ get_selected_file_foreach_cb (GtkTreeModel *model, { struct get_selected_file_closure *closure = data; - gtk_tree_model_get (model, iter, - MODEL_COL_FILE, &closure->file, - -1); if (closure->file) - g_object_unref (closure->file); + { + /* Just in case this function gets run more than once with a multiple selection; we only care about one file */ + g_object_unref (closure->file); + closure->file = NULL; + } + + gtk_tree_model_get (model, iter, + MODEL_COL_FILE, &closure->file, /* this will give us a reffed file */ + -1); } /* Returns a selected path from the file list */ @@ -2794,6 +2799,8 @@ bookmarks_check_add_sensitivity (GtkFileChooserDefault *impl) file = get_selected_file (impl); active = file && all_folders && (shortcut_find_position (impl, file) == -1); + if (file) + g_object_unref (file); } else active = all_folders;