aboutsummaryrefslogtreecommitdiffstats
path: root/plugins/prefer-plain
diff options
context:
space:
mode:
authorMilan Crha <mcrha@redhat.com>2011-03-04 21:01:03 +0800
committerRodrigo Moya <rodrigo@gnome-db.org>2011-06-30 00:41:41 +0800
commit10dd02bce0af2248f03563c7d5d2dcffec3e6145 (patch)
treed605b14e89c44a4f61f60599249d80e55a177b17 /plugins/prefer-plain
parent1c5f04dc86f873524ebe2233bd7a911faeee90d3 (diff)
downloadgsoc2013-evolution-10dd02bce0af2248f03563c7d5d2dcffec3e6145.tar
gsoc2013-evolution-10dd02bce0af2248f03563c7d5d2dcffec3e6145.tar.gz
gsoc2013-evolution-10dd02bce0af2248f03563c7d5d2dcffec3e6145.tar.bz2
gsoc2013-evolution-10dd02bce0af2248f03563c7d5d2dcffec3e6145.tar.lz
gsoc2013-evolution-10dd02bce0af2248f03563c7d5d2dcffec3e6145.tar.xz
gsoc2013-evolution-10dd02bce0af2248f03563c7d5d2dcffec3e6145.tar.zst
gsoc2013-evolution-10dd02bce0af2248f03563c7d5d2dcffec3e6145.zip
Bug #643693 - Crash opening attached text/html mail
Diffstat (limited to 'plugins/prefer-plain')
-rw-r--r--plugins/prefer-plain/prefer-plain.c18
1 files changed, 17 insertions, 1 deletions
diff --git a/plugins/prefer-plain/prefer-plain.c b/plugins/prefer-plain/prefer-plain.c
index 21c5a6b625..50b0d2852a 100644
--- a/plugins/prefer-plain/prefer-plain.c
+++ b/plugins/prefer-plain/prefer-plain.c
@@ -70,9 +70,25 @@ make_part_attachment (EMFormat *format, CamelStream *stream, CamelMimePart *part
em_format_part_as (
format, stream, part,
"application/octet-stream", NULL);
- } else
+ } else if (i == -1 && CAMEL_IS_MIME_MESSAGE (part)) {
+ /* message was asked to be formatted as text/html;
+ might be for cases where message itself is a text/html part */
+ CamelMimePart *new_part;
+ CamelDataWrapper *content;
+
+ content = camel_medium_get_content (CAMEL_MEDIUM (part));
+ g_return_if_fail (content != NULL);
+
+ new_part = camel_mime_part_new ();
+ camel_medium_set_content (CAMEL_MEDIUM (new_part), content);
+
+ em_format_part (format, stream, new_part, NULL);
+
+ g_object_unref (new_part);
+ } else {
/* FIXME Not passing a GCancellable here. */
em_format_part (format, stream, part, NULL);
+ }
g_string_truncate (format->part_id, partidlen);
}