diff options
author | Matthew Barnes <mbarnes@redhat.com> | 2011-08-10 20:40:06 +0800 |
---|---|---|
committer | Matthew Barnes <mbarnes@redhat.com> | 2011-08-10 20:50:37 +0800 |
commit | 90e4a46478e5c39b51bfd36bc252c10e9cd60865 (patch) | |
tree | 8ef552383a3ff08b9ec6accd909af5ded5779752 /mail | |
parent | ee0e032258fc9178ca7ef660aa8aa3b184cff55f (diff) | |
download | gsoc2013-evolution-90e4a46478e5c39b51bfd36bc252c10e9cd60865.tar.gz gsoc2013-evolution-90e4a46478e5c39b51bfd36bc252c10e9cd60865.tar.zst gsoc2013-evolution-90e4a46478e5c39b51bfd36bc252c10e9cd60865.zip |
EMFolderTreeModel: Avoid a potential refcount crash.
Diffstat (limited to 'mail')
-rw-r--r-- | mail/em-folder-tree-model.c | 8 |
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); |