Fixes NB#78683
[modest] / src / modest-mail-operation.c
index 62f982e..688399d 100644 (file)
@@ -872,8 +872,16 @@ modest_mail_operation_send_new_mail_cb (ModestMailOperation *self,
        /* Remove old mail from its source folder */
        draft_folder = modest_tny_account_get_special_folder (TNY_ACCOUNT (info->transport_account),
                                                              TNY_FOLDER_TYPE_DRAFTS);
+       if (!draft_folder) {
+               g_warning ("%s: modest_tny_account_get_special_folder(..) returned a NULL drafts folder", __FUNCTION__);
+               goto end;
+       }
        outbox_folder = modest_tny_account_get_special_folder (TNY_ACCOUNT (info->transport_account),
                                                               TNY_FOLDER_TYPE_OUTBOX);
+       if (!outbox_folder) {
+               g_warning ("%s: modest_tny_account_get_special_folder(..) returned a NULL outbox folder", __FUNCTION__);
+               goto end;
+       }
        if (info->draft_msg != NULL) {
                TnyFolder *folder = NULL;
                TnyFolder *src_folder = NULL;
@@ -1051,13 +1059,15 @@ modest_mail_operation_save_to_drafts_cb (ModestMailOperation *self,
        priv = MODEST_MAIL_OPERATION_GET_PRIVATE(self);
 
        if (!msg) {
-               g_set_error (&(priv->error), MODEST_MAIL_OPERATION_ERROR,
-                            MODEST_MAIL_OPERATION_ERROR_INSTANCE_CREATION_FAILED,
-                            "modest: failed to create a new msg\n");
+               if (!(priv->error)) {
+                       g_set_error (&(priv->error), MODEST_MAIL_OPERATION_ERROR,
+                                    MODEST_MAIL_OPERATION_ERROR_INSTANCE_CREATION_FAILED,
+                                    "modest: failed to create a new msg\n");
+               }
        } else {
                drafts = modest_tny_account_get_special_folder (TNY_ACCOUNT (info->transport_account),
                                                                TNY_FOLDER_TYPE_DRAFTS);
-               if (!drafts) {
+               if (!drafts && !(priv->error)) {
                        g_set_error (&(priv->error), MODEST_MAIL_OPERATION_ERROR,
                                     MODEST_MAIL_OPERATION_ERROR_ITEM_NOT_FOUND,
                                     "modest: failed to create a new msg\n");
@@ -1448,8 +1458,9 @@ recurse_folders_async_cb (TnyFolderStore *folder_store,
                        /* Add pending call */
                        info->pending_calls++;
                        
-                       tny_folder_store_get_folders_async (folder, folders, recurse_folders_async_cb, 
-                                                           NULL, NULL, info);
+                       tny_folder_store_get_folders_async (folder, folders, NULL,
+                                                           recurse_folders_async_cb, 
+                                                           NULL, info);
                        
                        g_object_unref (G_OBJECT (folder));
                        
@@ -1772,6 +1783,8 @@ modest_mail_operation_remove_folder (ModestMailOperation *self,
                                                    TNY_FOLDER_STORE (trash_folder), 
                                                    TRUE, NULL, NULL);
                        g_object_unref (trash_folder);
+               } else {
+                       g_warning ("%s: modest_tny_account_get_special_folder(..) returned a NULL trash folder", __FUNCTION__);
                }
        } else {
                TnyFolderStore *parent = tny_folder_get_folder_store (folder);
@@ -2228,7 +2241,7 @@ modest_mail_operation_get_msgs_full (ModestMailOperation *self,
        TnyIterator *iter = NULL;
        
        g_return_if_fail (MODEST_IS_MAIL_OPERATION (self));
-       
+
        /* Init mail operation */
        priv = MODEST_MAIL_OPERATION_GET_PRIVATE (self);
        priv->status = MODEST_MAIL_OPERATION_STATUS_IN_PROGRESS;
@@ -2332,6 +2345,7 @@ modest_mail_operation_get_msgs_full (ModestMailOperation *self,
                if (notify)
                        notify (user_data);
        }
+
 }