evolution/evolution-fix-crash-when-searching.patch
Dominique Leuenberger 2de28c3f59 Accepting request 154964 from home:badshah400:branches:GNOME:Factory
Add post-3.6.3 patches from upstream git to fix important bugs, including a couple of crashes. Build tested locally for openSUSE:Factory.

OBS-URL: https://build.opensuse.org/request/show/154964
OBS-URL: https://build.opensuse.org/package/show/GNOME:Factory/evolution?expand=0&rev=194
2013-02-14 12:13:32 +00:00

103 lines
3.9 KiB
Diff

From b19b5a6c30216e7663022bd406bcffbf8e6d5aa3 Mon Sep 17 00:00:00 2001
From: Milan Crha <mcrha@redhat.com>
Date: Wed, 23 Jan 2013 14:25:19 +0000
Subject: Bug #639698 - Crash in mail_shell_view_execute_search()
---
diff --git a/modules/mail/e-mail-shell-view.c b/modules/mail/e-mail-shell-view.c
index 29bb788..d500cfc 100644
--- a/modules/mail/e-mail-shell-view.c
+++ b/modules/mail/e-mail-shell-view.c
@@ -546,8 +546,8 @@ all_accounts:
* account-wide searches still in progress. */
text = e_shell_searchbar_get_search_text (searchbar);
if (text == NULL || *text == '\0') {
- CamelStore *selected_store;
- gchar *selected_folder_name;
+ CamelStore *selected_store = NULL;
+ gchar *selected_folder_name = NULL;
if (priv->search_account_all != NULL) {
g_object_unref (priv->search_account_all);
@@ -565,13 +565,17 @@ all_accounts:
* avoid search conflicts, so we can't just grab the
* folder URI and let the asynchronous callbacks run
* after we've already kicked off the search. */
- em_folder_tree_get_selected (
- folder_tree, &selected_store, &selected_folder_name);
- folder = camel_store_get_folder_sync (
- selected_store, selected_folder_name,
- CAMEL_STORE_FOLDER_INFO_FAST, NULL, NULL);
- e_mail_reader_set_folder (reader, folder);
- g_object_unref (selected_store);
+ if (em_folder_tree_get_selected (folder_tree, &selected_store, &selected_folder_name) &&
+ selected_store && selected_folder_name) {
+ folder = camel_store_get_folder_sync (
+ selected_store, selected_folder_name,
+ CAMEL_STORE_FOLDER_INFO_FAST, NULL, NULL);
+ e_mail_reader_set_folder (reader, folder);
+ g_object_unref (folder);
+ }
+
+ if (selected_store)
+ g_object_unref (selected_store);
g_free (selected_folder_name);
gtk_widget_set_sensitive (GTK_WIDGET (combo_box), TRUE);
@@ -610,7 +614,7 @@ all_accounts:
camel_service_connect_sync (service, NULL, NULL);
search_folder = (CamelVeeFolder *) camel_vee_folder_new (
- CAMEL_STORE (service), _("All Account Search"), 0);
+ CAMEL_STORE (service), _("All Account Search"), CAMEL_STORE_FOLDER_PRIVATE);
priv->search_account_all = search_folder;
g_object_unref (service);
@@ -643,8 +647,8 @@ current_account:
* account-wide searches still in progress. */
text = e_shell_searchbar_get_search_text (searchbar);
if (text == NULL || *text == '\0') {
- CamelStore *selected_store;
- gchar *selected_folder_name;
+ CamelStore *selected_store = NULL;
+ gchar *selected_folder_name = NULL;
if (priv->search_account_current != NULL) {
g_object_unref (priv->search_account_current);
@@ -662,13 +666,17 @@ current_account:
* avoid search conflicts, so we can't just grab the
* folder URI and let the asynchronous callbacks run
* after we've already kicked off the search. */
- em_folder_tree_get_selected (
- folder_tree, &selected_store, &selected_folder_name);
- folder = camel_store_get_folder_sync (
- selected_store, selected_folder_name,
- CAMEL_STORE_FOLDER_INFO_FAST, NULL, NULL);
- e_mail_reader_set_folder (reader, folder);
- g_object_unref (selected_store);
+ if (em_folder_tree_get_selected (folder_tree, &selected_store, &selected_folder_name) &&
+ selected_store && selected_folder_name) {
+ folder = camel_store_get_folder_sync (
+ selected_store, selected_folder_name,
+ CAMEL_STORE_FOLDER_INFO_FAST, NULL, NULL);
+ e_mail_reader_set_folder (reader, folder);
+ g_object_unref (folder);
+ }
+
+ if (selected_store)
+ g_object_unref (selected_store);
g_free (selected_folder_name);
gtk_widget_set_sensitive (GTK_WIDGET (combo_box), TRUE);
@@ -707,7 +715,7 @@ current_account:
camel_service_connect_sync (service, NULL, NULL);
search_folder = (CamelVeeFolder *) camel_vee_folder_new (
- CAMEL_STORE (service), _("Account Search"), 0);
+ CAMEL_STORE (service), _("Account Search"), CAMEL_STORE_FOLDER_PRIVATE);
priv->search_account_current = search_folder;
g_object_unref (service);
--
cgit v0.9.0.2