* src/maemo/modest-msg-view-window-ui-dimming.h:
[modest] / src / modest-tny-msg.c
index 0a23c7d..a9b7cbf 100644 (file)
@@ -211,15 +211,15 @@ copy_mime_part (TnyMimePart *part)
        TnyStream *attachment_stream;
 
        if (TNY_IS_MSG (part)) {
-               result = TNY_MIME_PART (tny_platform_factory_new_msg (modest_runtime_get_platform_factory ()));
-               attachment_content_type = "message/rfc822";
-               tny_mime_part_set_content_type (result, attachment_content_type);
-       } else {
-               result = tny_platform_factory_new_mime_part (
-                       modest_runtime_get_platform_factory());
-               attachment_content_type = tny_mime_part_get_content_type (part);
+               g_object_ref (part);
+               return part;
        }
 
+       result = tny_platform_factory_new_mime_part (
+               modest_runtime_get_platform_factory());
+
+       attachment_content_type = tny_mime_part_get_content_type (part);
+
        /* get mime part headers */
        attachment_filename = tny_mime_part_get_filename (part);
        attachment_cid = tny_mime_part_get_content_id (part);
@@ -242,9 +242,12 @@ copy_mime_part (TnyMimePart *part)
        iterator = tny_list_create_iterator (parts);
        while (!tny_iterator_is_done (iterator)) {
                TnyMimePart *subpart = TNY_MIME_PART (tny_iterator_get_current (iterator));
-               TnyMimePart *subpart_copy = copy_mime_part (subpart);
-               tny_mime_part_add_part (result, subpart_copy);
-               g_object_unref (subpart);
+               if (subpart) {
+                       TnyMimePart *subpart_copy = copy_mime_part (subpart);
+                       tny_mime_part_add_part (result, subpart_copy);
+                       g_object_unref (subpart);
+               }
+
                tny_iterator_next (iterator);
        }
        g_object_unref (iterator);
@@ -265,6 +268,7 @@ add_attachments (TnyMsg *msg, GList *attachments_list)
                old_attachment = pos->data;
                attachment_part = copy_mime_part (old_attachment);
                tny_mime_part_add_part (TNY_MIME_PART (msg), attachment_part);
+               g_object_unref (attachment_part);
        }
 }
 
@@ -309,8 +313,8 @@ modest_tny_msg_find_body_part_from_mime_part (TnyMimePart *msg, gboolean want_ht
 {
        const gchar *mime_type = want_html ? "text/html" : "text/plain";
        TnyMimePart *part = NULL;
-       TnyList *parts;
-       TnyIterator *iter;
+       TnyList *parts = NULL;
+       TnyIterator *iter = NULL;
 
        if (!msg)
                return NULL;
@@ -328,12 +332,19 @@ modest_tny_msg_find_body_part_from_mime_part (TnyMimePart *msg, gboolean want_ht
                gchar *content_type = NULL;
                do {
                        part = TNY_MIME_PART(tny_iterator_get_current (iter));
+                       if (part && TNY_IS_MSG (part)) {
+                               g_object_unref (part);
+                               tny_iterator_next (iter);
+                               continue;
+                       }
 
                        /* we need to strdown the content type, because
                         * tny_mime_part_has_content_type does not do it...
                         */
-                       content_type = g_ascii_strdown
-                               (tny_mime_part_get_content_type (part), -1);
+                       if (part) {
+                               content_type = g_ascii_strdown
+                                       (tny_mime_part_get_content_type (part), -1);
+                       }
                                                        
                        if (g_str_has_prefix (content_type, mime_type) &&
                            !tny_mime_part_is_attachment (part))
@@ -344,6 +355,7 @@ modest_tny_msg_find_body_part_from_mime_part (TnyMimePart *msg, gboolean want_ht
                                if (part)
                                        break;
                        }
+
                        if (part)
                                g_object_unref (G_OBJECT(part));