gtk+ r21317 - in trunk: . gtk
- From: matthiasc svn gnome org
- To: svn-commits-list gnome org
- Subject: gtk+ r21317 - in trunk: . gtk
- Date: Mon, 8 Sep 2008 02:49:20 +0000 (UTC)
Author: matthiasc
Date: Mon Sep 8 02:49:20 2008
New Revision: 21317
URL: http://svn.gnome.org/viewvc/gtk+?rev=21317&view=rev
Log:
Don't leak all search results
Modified:
trunk/ChangeLog
trunk/gtk/gtkfilechooserdefault.c
Modified: trunk/gtk/gtkfilechooserdefault.c
==============================================================================
--- trunk/gtk/gtkfilechooserdefault.c (original)
+++ trunk/gtk/gtkfilechooserdefault.c Mon Sep 8 02:49:20 2008
@@ -432,6 +432,8 @@
static void search_stop_searching (GtkFileChooserDefault *impl,
gboolean remove_query);
+static void search_clear_model_row (GtkTreeModel *model,
+ GtkTreeIter *iter);
static void search_clear_model (GtkFileChooserDefault *impl,
gboolean remove_from_treeview);
static gboolean search_should_respond (GtkFileChooserDefault *impl);
@@ -1936,7 +1938,7 @@
{
int start_row;
int num_inserted;
- const gchar *label;
+ gchar *label;
profile_start ("start", NULL);
@@ -8502,7 +8504,7 @@
list = data;
gtk_tree_model_get (model, iter, SEARCH_MODEL_COL_FILE, &file, -1);
- *list = g_slist_prepend (*list, file);
+ *list = g_slist_prepend (*list, g_object_ref (file));
}
/* Constructs a list of the selected paths in search mode */
@@ -8585,6 +8587,7 @@
if (!info)
{
+ search_clear_model_row (request->impl->search_model, &iter);
gtk_list_store_remove (request->impl->search_model, &iter);
goto out;
}
@@ -8744,6 +8747,38 @@
set_busy_cursor (impl, FALSE);
}
+static void
+search_clear_model_row (GtkTreeModel *model,
+ GtkTreeIter *iter)
+{
+ GFile *file;
+ gchar *display_name;
+ gchar *collation_key;
+ struct stat *statbuf;
+ GCancellable *cancellable;
+ gchar *mime_type;
+
+ gtk_tree_model_get (model, iter,
+ SEARCH_MODEL_COL_FILE, &file,
+ SEARCH_MODEL_COL_DISPLAY_NAME, &display_name,
+ SEARCH_MODEL_COL_COLLATION_KEY, &collation_key,
+ SEARCH_MODEL_COL_STAT, &statbuf,
+ SEARCH_MODEL_COL_CANCELLABLE, &cancellable,
+ SEARCH_MODEL_COL_MIME_TYPE, &mime_type,
+ -1);
+
+ if (file)
+ g_object_unref (file);
+
+ g_free (display_name);
+ g_free (collation_key);
+ g_free (statbuf);
+ g_free (mime_type);
+
+ if (cancellable)
+ g_cancellable_cancel (cancellable);
+}
+
/* Frees the data in the search_model */
static void
search_clear_model (GtkFileChooserDefault *impl,
@@ -8760,14 +8795,7 @@
if (gtk_tree_model_get_iter_first (model, &iter))
do
{
- GCancellable *cancellable;
-
- gtk_tree_model_get (model, &iter,
- SEARCH_MODEL_COL_CANCELLABLE, &cancellable,
- -1);
-
- if (cancellable)
- g_cancellable_cancel (cancellable);
+ search_clear_model_row (model, &iter);
}
while (gtk_tree_model_iter_next (model, &iter));
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]