Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
path: root/shell/ev-sidebar-links.c
diff options
context:
space:
mode:
authorNickolay V. Shmyrev <nshmyrev@src.gnome.org>2005-06-19 13:10:20 (GMT)
committer Nickolay V. Shmyrev <nshmyrev@src.gnome.org>2005-06-19 13:10:20 (GMT)
commitbb5ea194600d5ae09b18a147420f4fc42c0808df (patch)
tree7f0390be29773a1159e75b4456a79ecb361281ac /shell/ev-sidebar-links.c
parentc7c3efc21f970868c633bc87b03259b9a7178eff (diff)
Fix memory leak
* cut-n-paste/recent-files/egg-recent-view-gtk.c: (egg_recent_view_gtk_finalize): Fix memory leak * cut-n-paste/toolbar-editor/Makefile.am: Fix location of cursor icon. * pdf/ev-poppler.cc: * shell/ev-page-action.c: (build_new_tree_cb), (match_selected_cb), (display_completion_text), (match_completion): * shell/ev-sidebar-links.c: (ev_sidebar_links_dispose), (selection_changed_callback), (create_loading_model), (print_section_cb), (links_page_num_func), (update_page_callback_foreach): * shell/ev-window.c: (ev_window_dispose): Small memory fixes. Links model now store objects instead of pointers to improve memory management.
Diffstat (limited to 'shell/ev-sidebar-links.c')
-rw-r--r--shell/ev-sidebar-links.c24
1 files changed, 22 insertions, 2 deletions
diff --git a/shell/ev-sidebar-links.c b/shell/ev-sidebar-links.c
index 6573f80..55f2ddb 100644
--- a/shell/ev-sidebar-links.c
+++ b/shell/ev-sidebar-links.c
@@ -151,6 +151,11 @@ ev_sidebar_links_dispose (GObject *object)
sidebar->priv->job = NULL;
}
+ if (sidebar->priv->model) {
+ g_object_unref (sidebar->priv->model);
+ sidebar->priv->model = NULL;
+ }
+
if (sidebar->priv->document) {
g_object_unref (sidebar->priv->document);
sidebar->priv->document = NULL;
@@ -215,6 +220,8 @@ selection_changed_callback (GtkTreeSelection *selection,
ev_page_cache_set_link (ev_sidebar_links->priv->page_cache, link);
g_signal_handler_unblock (ev_sidebar_links->priv->page_cache,
ev_sidebar_links->priv->page_changed_id);
+
+ g_object_unref (link);
}
}
@@ -228,7 +235,7 @@ create_loading_model (void)
/* Creates a fake model to indicate that we're loading */
retval = (GtkTreeModel *)gtk_list_store_new (EV_DOCUMENT_LINKS_COLUMN_NUM_COLUMNS,
G_TYPE_STRING,
- G_TYPE_POINTER,
+ G_TYPE_OBJECT,
G_TYPE_BOOLEAN);
gtk_list_store_append (GTK_LIST_STORE (retval), &iter);
@@ -263,11 +270,17 @@ print_section_cb (GtkWidget *menuitem, EvSidebarLinks *sidebar)
-1);
first_page = ev_link_get_page (link) + 1;
+ if (link)
+ g_object_unref (link);
+
if (gtk_tree_model_iter_next (model, &iter)) {
gtk_tree_model_get (model, &iter,
EV_DOCUMENT_LINKS_COLUMN_LINK, &link,
-1);
last_page = ev_link_get_page (link);
+
+ if (link)
+ g_object_unref (link);
} else {
last_page = -1;
}
@@ -440,6 +453,9 @@ links_page_num_func (GtkTreeViewColumn *tree_column,
"visible", FALSE,
NULL);
}
+
+ if (link)
+ g_object_unref (link);
}
/* Public Functions */
@@ -477,10 +493,14 @@ update_page_callback_foreach (GtkTreeModel *model,
selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (sidebar_links->priv->tree_view));
gtk_tree_selection_select_path (selection, path);
-
+
+ g_object_unref (link);
return TRUE;
}
}
+
+ if (link)
+ g_object_unref (link);
return FALSE;
}