aboutsummaryrefslogtreecommitdiffstats
path: root/mail/em-inline-filter.c
diff options
context:
space:
mode:
authorMilan Crha <mcrha@redhat.com>2010-10-05 19:58:00 +0800
committerMilan Crha <mcrha@redhat.com>2010-10-05 19:58:00 +0800
commita2b2b88a9013098eb4ded36f3e17e6956561f975 (patch)
tree32db723e5e6bfd5139b772cab22a9c043ea56c44 /mail/em-inline-filter.c
parent3797f5a167bee5d6a8b13d31eff578adecdade0a (diff)
downloadgsoc2013-evolution-a2b2b88a9013098eb4ded36f3e17e6956561f975.tar
gsoc2013-evolution-a2b2b88a9013098eb4ded36f3e17e6956561f975.tar.gz
gsoc2013-evolution-a2b2b88a9013098eb4ded36f3e17e6956561f975.tar.bz2
gsoc2013-evolution-a2b2b88a9013098eb4ded36f3e17e6956561f975.tar.lz
gsoc2013-evolution-a2b2b88a9013098eb4ded36f3e17e6956561f975.tar.xz
gsoc2013-evolution-a2b2b88a9013098eb4ded36f3e17e6956561f975.tar.zst
gsoc2013-evolution-a2b2b88a9013098eb4ded36f3e17e6956561f975.zip
Bug #630295 - Inline GPG encrypted message is not always recognized
Diffstat (limited to 'mail/em-inline-filter.c')
-rw-r--r--mail/em-inline-filter.c10
1 files changed, 7 insertions, 3 deletions
diff --git a/mail/em-inline-filter.c b/mail/em-inline-filter.c
index c1376fc18f..010a381472 100644
--- a/mail/em-inline-filter.c
+++ b/mail/em-inline-filter.c
@@ -152,7 +152,7 @@ inline_filter_scan (CamelMimeFilter *f, gchar *in, gsize len, gint final)
EMInlineFilter *emif = (EMInlineFilter *)f;
gchar *inptr = in, *inend = in+len;
gchar *data_start = in;
- gchar *start;
+ gchar *start = in;
while (inptr < inend) {
gint rest_len;
@@ -292,9 +292,13 @@ inline_filter_scan (CamelMimeFilter *f, gchar *in, gsize len, gint final)
/* always stop as plain, especially when not read those tags fully */
emif->state = EMIF_PLAIN;
- inline_filter_add_part (emif, data_start, inend-data_start);
+ inline_filter_add_part (emif, data_start, inend - data_start);
+ } else if (start > data_start) {
+ /* backup the last line, in case the tag is divided within buffers */
+ camel_mime_filter_backup (f, start, inend - start);
+ g_byte_array_append (emif->data, (guchar *)data_start, start - data_start);
} else {
- g_byte_array_append (emif->data, (guchar *)data_start, inend-data_start);
+ g_byte_array_append (emif->data, (guchar *)data_start, inend - data_start);
}
return 0;