aboutsummaryrefslogtreecommitdiffstats
path: root/em-format/e-mail-formatter-quote-headers.c
diff options
context:
space:
mode:
authorMilan Crha <mcrha@redhat.com>2013-03-07 02:37:37 +0800
committerMilan Crha <mcrha@redhat.com>2013-03-07 02:38:19 +0800
commit0d96f08f9f0400ab9202f1dcdbaca1d891a41ac8 (patch)
tree16a25ce6707e5a61b86bedc3386e8412be764227 /em-format/e-mail-formatter-quote-headers.c
parent989886007f3f69ca64e383ad6d64ef8c352f6df8 (diff)
downloadgsoc2013-evolution-0d96f08f9f0400ab9202f1dcdbaca1d891a41ac8.tar
gsoc2013-evolution-0d96f08f9f0400ab9202f1dcdbaca1d891a41ac8.tar.gz
gsoc2013-evolution-0d96f08f9f0400ab9202f1dcdbaca1d891a41ac8.tar.bz2
gsoc2013-evolution-0d96f08f9f0400ab9202f1dcdbaca1d891a41ac8.tar.lz
gsoc2013-evolution-0d96f08f9f0400ab9202f1dcdbaca1d891a41ac8.tar.xz
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.c20
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);