From 6e3a6ba12f72a0aac10d6ecbad86a4d034a5642a Mon Sep 17 00:00:00 2001 From: Federico Mena Quintero Date: Fri, 11 Sep 2009 12:44:21 -0500 Subject: [PATCH] Make get_selected_file() return a ref'ed file The old semantics was to return a GFile* owned by the file system model; the new semantics is to hand out new references whenever possible. Signed-off-by: Federico Mena Quintero --- gtk/gtkfilechooserdefault.c | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) 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;