aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--mail/e-mail-account-store.c8
1 files changed, 7 insertions, 1 deletions
diff --git a/mail/e-mail-account-store.c b/mail/e-mail-account-store.c
index c7afce32d4..8b8b6fc63a 100644
--- a/mail/e-mail-account-store.c
+++ b/mail/e-mail-account-store.c
@@ -1201,8 +1201,14 @@ e_mail_account_store_remove_service (EMailAccountStore *store,
g_return_if_fail (E_IS_MAIL_ACCOUNT_STORE (store));
g_return_if_fail (CAMEL_IS_SERVICE (service));
+ /* XXX Our service_removed() class method calls e_source_remove(),
+ * which causes the registry service to emit a "source-removed"
+ * signal. But since other applications may also induce signal
+ * emissions from the registry service, EMailUISession handles
+ * "source-removed" by calling this function. So quietly break
+ * the cycle if we don't find the service in our tree model. */
if (!mail_account_store_get_iter (store, service, &iter))
- g_return_if_reached ();
+ return;
/* If no parent window was given, skip the request signal. */
if (GTK_IS_WINDOW (parent_window))