diff options
author | Dan Vrátil <dvratil@redhat.com> | 2012-08-03 21:43:08 +0800 |
---|---|---|
committer | Dan Vrátil <dvratil@redhat.com> | 2012-08-03 21:43:08 +0800 |
commit | 6dd78a31ded543394f9375695f075ecaa15bfb70 (patch) | |
tree | ae11a453558ee2c4faf1678bb266d67a1b50cf1b | |
parent | 22098ef8f13f6706c3cbfb50e68de6bf70f47468 (diff) | |
download | gsoc2013-evolution-6dd78a31ded543394f9375695f075ecaa15bfb70.tar gsoc2013-evolution-6dd78a31ded543394f9375695f075ecaa15bfb70.tar.gz gsoc2013-evolution-6dd78a31ded543394f9375695f075ecaa15bfb70.tar.bz2 gsoc2013-evolution-6dd78a31ded543394f9375695f075ecaa15bfb70.tar.lz gsoc2013-evolution-6dd78a31ded543394f9375695f075ecaa15bfb70.tar.xz gsoc2013-evolution-6dd78a31ded543394f9375695f075ecaa15bfb70.tar.zst gsoc2013-evolution-6dd78a31ded543394f9375695f075ecaa15bfb70.zip |
Bug #680331 - Crash when replying to a message
-rw-r--r-- | em-format/e-mail-formatter-quote-message-rfc822.c | 15 | ||||
-rw-r--r-- | em-format/e-mail-formatter-quote.c | 13 | ||||
-rw-r--r-- | modules/prefer-plain/e-mail-parser-prefer-plain.c | 2 |
3 files changed, 24 insertions, 6 deletions
diff --git a/em-format/e-mail-formatter-quote-message-rfc822.c b/em-format/e-mail-formatter-quote-message-rfc822.c index fb5922c1af..531815d120 100644 --- a/em-format/e-mail-formatter-quote-message-rfc822.c +++ b/em-format/e-mail-formatter-quote-message-rfc822.c @@ -82,9 +82,12 @@ emfqe_message_rfc822_format (EMailFormatterExtension *extension, g_free (header); iter = e_mail_part_list_get_iter (context->parts, part->id); + if (!iter) { + return FALSE; + } end = g_strconcat (part->id, ".end", NULL); - for (iter = iter->next; iter; iter = iter->next) { + for (iter = g_slist_next (iter); iter; iter = g_slist_next (iter)) { EMailPart * p = iter->data; if (!p) continue; @@ -111,7 +114,10 @@ emfqe_message_rfc822_format (EMailFormatterExtension *extension, while (iter) { p = iter->data; if (!p) { - iter = iter->next; + iter = g_slist_next (iter); + if (!iter) { + break; + } continue; } @@ -119,7 +125,10 @@ emfqe_message_rfc822_format (EMailFormatterExtension *extension, break; } - iter = iter->next; + iter = g_slist_next (iter); + if (!iter) { + break; + } } g_free (sub_end); continue; diff --git a/em-format/e-mail-formatter-quote.c b/em-format/e-mail-formatter-quote.c index 8abb73130b..5245fee2ba 100644 --- a/em-format/e-mail-formatter-quote.c +++ b/em-format/e-mail-formatter-quote.c @@ -99,7 +99,7 @@ mail_formatter_quote_run (EMailFormatter *formatter, "<blockquote type=cite>\n", cancellable, NULL); } - for (iter = context->parts; iter; iter = iter->next) { + for (iter = context->parts; iter; iter = g_slist_next (iter)) { EMailPart *part = iter->data; if (!part) @@ -116,16 +116,23 @@ mail_formatter_quote_run (EMailFormatter *formatter, while (iter) { EMailPart *p = iter->data; if (!p) { - iter = iter->next; + iter = g_slist_next (iter); + if (!iter) { + break; + } continue; } if (g_strcmp0 (p->id, end) == 0) break; - iter = iter->next; + iter = g_slist_next (iter); + if (!iter) { + break; + } } g_free (end); + continue; } diff --git a/modules/prefer-plain/e-mail-parser-prefer-plain.c b/modules/prefer-plain/e-mail-parser-prefer-plain.c index a325f51f18..4acf9078f9 100644 --- a/modules/prefer-plain/e-mail-parser-prefer-plain.c +++ b/modules/prefer-plain/e-mail-parser-prefer-plain.c @@ -322,6 +322,8 @@ empe_prefer_plain_parse (EMailParserExtension *extension, cancellable)); } + g_string_truncate (part_id, partidlen); + return parts; } |