diff options
author | Milan Crha <mcrha@redhat.com> | 2011-04-21 15:49:50 +0800 |
---|---|---|
committer | Milan Crha <mcrha@redhat.com> | 2011-04-21 15:49:50 +0800 |
commit | 78f83f5811bc58678957c4995b5ed88417ccb2a1 (patch) | |
tree | 6dc535b82dc7bc802e2273fb8a504d869df5c21a | |
parent | eda1599271759c9fe298729a63c6f56d5cd9fccb (diff) | |
download | gsoc2013-evolution-78f83f5811bc58678957c4995b5ed88417ccb2a1.tar gsoc2013-evolution-78f83f5811bc58678957c4995b5ed88417ccb2a1.tar.gz gsoc2013-evolution-78f83f5811bc58678957c4995b5ed88417ccb2a1.tar.bz2 gsoc2013-evolution-78f83f5811bc58678957c4995b5ed88417ccb2a1.tar.lz gsoc2013-evolution-78f83f5811bc58678957c4995b5ed88417ccb2a1.tar.xz gsoc2013-evolution-78f83f5811bc58678957c4995b5ed88417ccb2a1.tar.zst gsoc2013-evolution-78f83f5811bc58678957c4995b5ed88417ccb2a1.zip |
Bug #641154 - Crash in emae_check_authtype_done
-rw-r--r-- | mail/em-account-editor.c | 24 |
1 files changed, 22 insertions, 2 deletions
diff --git a/mail/em-account-editor.c b/mail/em-account-editor.c index 55ffb3ac57..f8f1fbe44a 100644 --- a/mail/em-account-editor.c +++ b/mail/em-account-editor.c @@ -127,6 +127,7 @@ typedef struct _EMAccountEditorService { GtkWidget *check_dialog; gint check_id; + struct _EMAccountEditorService **check_data; GList *authtypes; /* if "Check supported" */ CamelProvider *provider; @@ -1896,9 +1897,18 @@ emae_check_authtype_done (const gchar *uri, GList *types, gpointer data) { - EMAccountEditorService *service = data; + EMAccountEditorService **pservice = data; + EMAccountEditorService *service; GtkWidget *editor; + g_return_if_fail (pservice != NULL); + + service = *pservice; + if (!service) { + g_free (pservice); + return; + } + editor = E_CONFIG (service->emae->config)->window; if (service->check_dialog) { @@ -1914,7 +1924,10 @@ emae_check_authtype_done (const gchar *uri, gtk_widget_set_sensitive (editor, TRUE); service->check_id = -1; + service->check_data = NULL; g_object_unref (service->emae); + *pservice = NULL; + g_free (pservice); } static void @@ -1926,6 +1939,9 @@ emae_check_authtype_response (GtkWidget *d, editor = E_CONFIG (service->emae->config)->window; + if (service->check_data) + (*service->check_data) = NULL; + service->check_data = NULL; mail_msg_cancel (service->check_id); gtk_widget_destroy (service->check_dialog); service->check_dialog = NULL; @@ -1939,6 +1955,7 @@ emae_check_authtype (GtkWidget *w, EMAccountEditorService *service) { EMAccountEditor *emae = service->emae; + EMAccountEditorService **pservice; EMailSession *session; EAccount *account; GtkWidget *editor; @@ -1960,9 +1977,12 @@ emae_check_authtype (GtkWidget *w, if (editor != NULL) gtk_widget_set_sensitive (editor, FALSE); + pservice = g_new0 (EMAccountEditorService *, 1); + *pservice = service; + service->check_data = pservice; service->check_id = mail_check_service ( session, uri, service->type, - emae_check_authtype_done, service); + emae_check_authtype_done, pservice); } static void |