diff options
author | Milan Crha <mcrha@redhat.com> | 2013-03-07 02:37:37 +0800 |
---|---|---|
committer | Milan Crha <mcrha@redhat.com> | 2013-03-07 02:38:19 +0800 |
commit | 0d96f08f9f0400ab9202f1dcdbaca1d891a41ac8 (patch) | |
tree | 16a25ce6707e5a61b86bedc3386e8412be764227 /em-format/e-mail-formatter-quote-headers.c | |
parent | 989886007f3f69ca64e383ad6d64ef8c352f6df8 (diff) | |
download | gsoc2013-evolution-0d96f08f9f0400ab9202f1dcdbaca1d891a41ac8.tar.gz gsoc2013-evolution-0d96f08f9f0400ab9202f1dcdbaca1d891a41ac8.tar.zst gsoc2013-evolution-0d96f08f9f0400ab9202f1dcdbaca1d891a41ac8.zip |
Bug #690092 - Crash under format_full_headers()
Diffstat (limited to 'em-format/e-mail-formatter-quote-headers.c')
-rw-r--r-- | em-format/e-mail-formatter-quote-headers.c | 20 |
1 files changed, 13 insertions, 7 deletions
diff --git a/em-format/e-mail-formatter-quote-headers.c b/em-format/e-mail-formatter-quote-headers.c index 20e97fdc69..4a29d849c5 100644 --- a/em-format/e-mail-formatter-quote-headers.c +++ b/em-format/e-mail-formatter-quote-headers.c @@ -121,15 +121,19 @@ emfqe_format_header (EMailFormatter *formatter, if (addrspec) { struct _camel_header_address *addrs; GString *html; + gchar *charset; if (!(txt = camel_medium_get_header (part, name))) return; + charset = e_mail_formatter_dup_charset (formatter); + if (!charset) + charset = e_mail_formatter_dup_default_charset (formatter); + buf = camel_header_unfold (txt); - addrs = camel_header_address_decode ( - txt, e_mail_formatter_get_charset (formatter) ? - e_mail_formatter_get_charset (formatter) : - e_mail_formatter_get_default_charset (formatter)); + addrs = camel_header_address_decode (txt, charset); + g_free (charset); + if (addrs == NULL) { g_free (buf); return; @@ -189,7 +193,7 @@ emqfe_headers_format (EMailFormatterExtension *extension, const gchar *charset; GList *iter; GString *buffer; - const GQueue *default_headers; + GQueue *headers_queue; if (!part) return FALSE; @@ -201,8 +205,8 @@ emqfe_headers_format (EMailFormatterExtension *extension, buffer = g_string_new (""); /* dump selected headers */ - default_headers = e_mail_formatter_get_headers (formatter); - for (iter = default_headers->head; iter; iter = iter->next) { + headers_queue = e_mail_formatter_dup_headers (formatter); + for (iter = headers_queue->head; iter; iter = iter->next) { struct _camel_header_raw *raw_header; EMailFormatterHeader *h = iter->data; guint32 flags; @@ -222,6 +226,8 @@ emqfe_headers_format (EMailFormatterExtension *extension, } } + g_queue_free_full (headers_queue, (GDestroyNotify) e_mail_formatter_header_free); + g_string_append (buffer, "<br>\n"); camel_stream_write_string (stream, buffer->str, cancellable, NULL); |