Blob Blame History Raw
From 6022b2b7816fea84919eef5993363f636bf734dc Mon Sep 17 00:00:00 2001
From: Milan Crha <mcrha@redhat.com>
Date: Mon, 3 Sep 2018 09:43:50 +0200
Subject: evo-I#86 - Quoting of plain text mail into HTML mode mangles deeper
 levels

Related to https://gitlab.gnome.org/GNOME/evolution/issues/86

diff --git a/src/camel/camel-mime-filter-tohtml.c b/src/camel/camel-mime-filter-tohtml.c
index 07024aa1a..df6283655 100644
--- a/src/camel/camel-mime-filter-tohtml.c
+++ b/src/camel/camel-mime-filter-tohtml.c
@@ -303,6 +303,7 @@ html_convert (CamelMimeFilter *mime_filter,
 	outend = mime_filter->outbuf + mime_filter->outsize;
 
 	if (priv->flags & CAMEL_MIME_FILTER_TOHTML_PRE && !priv->pre_open) {
+		outptr = check_size (mime_filter, outptr, &outend, 6);
 		outptr = g_stpcpy (outptr, "<pre>");
 		priv->pre_open = TRUE;
 	}
@@ -339,13 +340,13 @@ html_convert (CamelMimeFilter *mime_filter,
 
 			depth = citation_depth (start, inend, &skip);
 			while (priv->blockquote_depth < depth) {
-				outptr = check_size (mime_filter, outptr, &outend, 30);
-				outptr = g_stpcpy (outptr, "<blockquote type=\"cite\">\n");
+				outptr = check_size (mime_filter, outptr, &outend, 25);
+				outptr = g_stpcpy (outptr, "<blockquote type=\"cite\">");
 				priv->blockquote_depth++;
 			}
 			while (priv->blockquote_depth > depth) {
-				outptr = check_size (mime_filter, outptr, &outend, 15);
-				outptr = g_stpcpy (outptr, "</blockquote>\n");
+				outptr = check_size (mime_filter, outptr, &outend, 14);
+				outptr = g_stpcpy (outptr, "</blockquote>");
 				priv->blockquote_depth--;
 			}
 #if FOOLISHLY_UNMUNGE_FROM
@@ -463,14 +464,14 @@ html_convert (CamelMimeFilter *mime_filter,
 				outptr, &outend);
 
 		while (priv->blockquote_depth > 0) {
-			outptr = check_size (mime_filter, outptr, &outend, 15);
+			outptr = check_size (mime_filter, outptr, &outend, 14);
 			outptr = g_stpcpy (outptr, "</blockquote>");
 			priv->blockquote_depth--;
 		}
 
 		if (priv->pre_open) {
 			/* close the pre-tag */
-			outptr = check_size (mime_filter, outptr, &outend, 10);
+			outptr = check_size (mime_filter, outptr, &outend, 7);
 			outptr = g_stpcpy (outptr, "</pre>");
 			priv->pre_open = FALSE;
 		}