aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMatthew Barnes <mbarnes@redhat.com>2011-08-10 20:40:06 +0800
committerRodrigo Moya <rodrigo@gnome-db.org>2011-09-14 20:08:48 +0800
commitbae19960b300c3f39ca093f51576621aacbbc84f (patch)
tree0039fadb968fdafbd352c7011c89e19bdae85d05
parenta7b3039aa059814ba00c28f84c9372dcbdfb9bbf (diff)
downloadgsoc2013-evolution-bae19960b300c3f39ca093f51576621aacbbc84f.tar
gsoc2013-evolution-bae19960b300c3f39ca093f51576621aacbbc84f.tar.gz
gsoc2013-evolution-bae19960b300c3f39ca093f51576621aacbbc84f.tar.bz2
gsoc2013-evolution-bae19960b300c3f39ca093f51576621aacbbc84f.tar.lz
gsoc2013-evolution-bae19960b300c3f39ca093f51576621aacbbc84f.tar.xz
gsoc2013-evolution-bae19960b300c3f39ca093f51576621aacbbc84f.tar.zst
gsoc2013-evolution-bae19960b300c3f39ca093f51576621aacbbc84f.zip
EMFolderTreeModel: Avoid a potential refcount crash.
-rw-r--r--mail/em-folder-tree-model.c8
1 files changed, 7 insertions, 1 deletions
diff --git a/mail/em-folder-tree-model.c b/mail/em-folder-tree-model.c
index eb6239e22a..bbf9dd558c 100644
--- a/mail/em-folder-tree-model.c
+++ b/mail/em-folder-tree-model.c
@@ -1155,8 +1155,14 @@ em_folder_tree_model_remove_folders (EMFolderTreeModel *model,
gtk_tree_store_remove ((GtkTreeStore *) model, toplevel);
- if (is_store)
+ /* Freeing the GtkTreeRowReference in the store info may finalize
+ * the model. Keep the model alive until the store info is fully
+ * removed from the hash table. */
+ if (is_store) {
+ g_object_ref (model);
g_hash_table_remove (model->priv->store_index, si->store);
+ g_object_unref (model);
+ }
g_free (full_name);
g_free (uri);