diff --git a/k9mail/src/main/java/com/fsck/k9/helper/HtmlConverter.java b/k9mail/src/main/java/com/fsck/k9/helper/HtmlConverter.java
index 28bf875b4..ac63716f9 100644
--- a/k9mail/src/main/java/com/fsck/k9/helper/HtmlConverter.java
+++ b/k9mail/src/main/java/com/fsck/k9/helper/HtmlConverter.java
@@ -2,13 +2,10 @@ package com.fsck.k9.helper;
import android.text.*;
import android.text.Html.TagHandler;
-import android.util.Log;
import com.fsck.k9.K9;
import org.xml.sax.XMLReader;
-import java.io.IOException;
-import java.io.StringReader;
import java.util.Collections;
import java.util.HashSet;
import java.util.Locale;
@@ -211,29 +208,23 @@ public class HtmlConverter {
// Encode HTML entities to make sure we don't display something evil.
text = TextUtils.htmlEncode(text);
- StringReader reader = new StringReader(text);
StringBuilder buff = new StringBuilder(text.length() + TEXT_TO_HTML_EXTRA_BUFFER_LENGTH);
buff.append(htmlifyMessageHeader());
- int c;
- try {
- while ((c = reader.read()) != -1) {
- switch (c) {
- case '\n':
- // pine treats
as two newlines, but
as one newline. Use
so our messages aren't
- // doublespaced.
- buff.append("
");
- break;
- case '\r':
- break;
- default:
- buff.append((char)c);
- }//switch
- }
- } catch (IOException e) {
- //Should never happen
- Log.e(K9.LOG_TAG, "Could not read string to convert text to HTML:", e);
+ for (int index = 0; index < text.length(); index++) {
+ char c = text.charAt(index);
+ switch (c) {
+ case '\n':
+ // pine treats
as two newlines, but
as one newline. Use
so our messages aren't
+ // doublespaced.
+ buff.append("
");
+ break;
+ case '\r':
+ break;
+ default:
+ buff.append(c);
+ }//switch
}
buff.append(htmlifyMessageFooter());
@@ -274,60 +265,54 @@ public class HtmlConverter {
if (text.length() > MAX_SMART_HTMLIFY_MESSAGE_LENGTH) {
return simpleTextToHtml(text);
}
- StringReader reader = new StringReader(text);
StringBuilder buff = new StringBuilder(text.length() + TEXT_TO_HTML_EXTRA_BUFFER_LENGTH);
boolean isStartOfLine = true; // Are we currently at the start of a line?
int spaces = 0;
int quoteDepth = 0; // Number of DIVs deep we are.
int quotesThisLine = 0; // How deep we should be quoting for this line.
- try {
- int c;
- while ((c = reader.read()) != -1) {
- if (isStartOfLine) {
- switch (c) {
- case ' ':
- spaces++;
- break;
- case '>':
- quotesThisLine++;
- spaces = 0;
- break;
- case '\n':
- appendbq(buff, quotesThisLine, quoteDepth);
- quoteDepth = quotesThisLine;
+ for (int index = 0; index < text.length(); index++) {
+ char c = text.charAt(index);
+ if (isStartOfLine) {
+ switch (c) {
+ case ' ':
+ spaces++;
+ break;
+ case '>':
+ quotesThisLine++;
+ spaces = 0;
+ break;
+ case '\n':
+ appendbq(buff, quotesThisLine, quoteDepth);
+ quoteDepth = quotesThisLine;
- appendsp(buff, spaces);
- spaces = 0;
+ appendsp(buff, spaces);
+ spaces = 0;
- appendchar(buff, c);
- isStartOfLine = true;
- quotesThisLine = 0;
- break;
- default:
- isStartOfLine = false;
-
- appendbq(buff, quotesThisLine, quoteDepth);
- quoteDepth = quotesThisLine;
-
- appendsp(buff, spaces);
- spaces = 0;
-
- appendchar(buff, c);
- isStartOfLine = false;
- break;
- }
- }
- else {
appendchar(buff, c);
- if (c == '\n') {
- isStartOfLine = true;
- quotesThisLine = 0;
- }
+ isStartOfLine = true;
+ quotesThisLine = 0;
+ break;
+ default:
+ isStartOfLine = false;
+
+ appendbq(buff, quotesThisLine, quoteDepth);
+ quoteDepth = quotesThisLine;
+
+ appendsp(buff, spaces);
+ spaces = 0;
+
+ appendchar(buff, c);
+ isStartOfLine = false;
+ break;
+ }
+ }
+ else {
+ appendchar(buff, c);
+ if (c == '\n') {
+ isStartOfLine = true;
+ quotesThisLine = 0;
}
}
- } catch (IOException e) {
- //Should never happen
- Log.e(K9.LOG_TAG, "Could not read string to convert text to HTML:", e);
}
// Close off any quotes we may have opened.
if (quoteDepth > 0) {