Fix memory leak in create_msg_thread()
[modest] / src / modest-mail-operation.c
index ede8f8e..7c78ded 100644 (file)
@@ -805,6 +805,7 @@ create_msg_thread (gpointer thread_data)
 
        g_object_unref (info->mail_op);
        g_slice_free (CreateMsgInfo, info);
+       if (new_msg) g_object_unref(new_msg);
        return NULL;
 }
 
@@ -2475,12 +2476,25 @@ modest_mail_operation_remove_msgs (ModestMailOperation *self,
 
        tny_folder_remove_msgs (folder, remove_headers, &(priv->error));
        if (!priv->error) {
-               if (TNY_IS_CAMEL_IMAP_FOLDER (folder) || 
-                   TNY_IS_CAMEL_POP_FOLDER (folder))
-                       tny_folder_sync_async(folder, FALSE, NULL, NULL, NULL); /* FALSE --> don't expunge */ 
+               gboolean expunge, leave_on_server;
+               const gchar *account_name;
+               TnyAccount *account;
+               
+               account = tny_folder_get_account (folder);
+               account_name = modest_tny_account_get_parent_modest_account_name_for_server_account (account);
+               leave_on_server =
+                       modest_account_mgr_get_leave_on_server (modest_runtime_get_account_mgr (),
+                                       account_name);
+
+               if (TNY_IS_CAMEL_POP_FOLDER (folder) && !leave_on_server)
+                       expunge = TRUE;
                else
-                       /* local folders */
-                       tny_folder_sync_async(folder, TRUE, NULL, NULL, NULL); /* TRUE --> expunge */
+                       expunge = FALSE;
+
+               /* Sync folder */
+               tny_folder_sync_async(folder, expunge, NULL, NULL, NULL);
+               
+               g_object_unref (account);
        }