Loading src/com/fsck/k9/mail/internet/DecoderUtil.java +15 −11 Original line number Diff line number Diff line Loading @@ -110,24 +110,28 @@ public class DecoderUtil { while (true) { int begin = body.indexOf("=?", previousEnd); if (begin == -1) { sb.append(body.substring(previousEnd)); return sb.toString(); } // ANDROID: The mime4j original version has an error here. It gets confused if // the encoded string begins with an '=' (just after "?Q?"). This patch seeks forward // to find the two '?' in the "header", before looking for the final "?=". int endScan = begin + 2; if (begin != -1) { int qm1 = body.indexOf('?', endScan + 2); int qm2 = body.indexOf('?', qm1 + 1); if (qm2 != -1) { endScan = qm2 + 1; int qm1 = body.indexOf('?', begin + 2); if (qm1 == -1) { sb.append(body.substring(previousEnd)); return sb.toString(); } int qm2 = body.indexOf('?', qm1 + 1); if (qm2 == -1) { sb.append(body.substring(previousEnd)); return sb.toString(); } int end = begin == -1 ? -1 : body.indexOf("?=", endScan); int end = body.indexOf("?=", qm2 + 1); if (end == -1) { if (previousEnd == 0) return body; sb.append(body.substring(previousEnd)); return sb.toString(); } Loading tests/src/com/fsck/k9/mail/internet/DecoderUtilTest.java +2 −4 Original line number Diff line number Diff line Loading @@ -57,8 +57,7 @@ public class DecoderUtilTest extends TestCase { assertEquals(expect, DecoderUtil.decodeEncodedWords(body, message)); body = "=??q?a?="; expect = "=??q?a?="; //expect = "a"; expect = "a"; message = null; assertEquals(expect, DecoderUtil.decodeEncodedWords(body, message)); Loading Loading @@ -88,8 +87,7 @@ public class DecoderUtilTest extends TestCase { assertEquals(expect, DecoderUtil.decodeEncodedWords(body, message)); body = "=?x?q?X?="; expect = "=?x?q?X?="; //expect = "X"; expect = "X"; message = null; assertEquals(expect, DecoderUtil.decodeEncodedWords(body, message)); Loading Loading
src/com/fsck/k9/mail/internet/DecoderUtil.java +15 −11 Original line number Diff line number Diff line Loading @@ -110,24 +110,28 @@ public class DecoderUtil { while (true) { int begin = body.indexOf("=?", previousEnd); if (begin == -1) { sb.append(body.substring(previousEnd)); return sb.toString(); } // ANDROID: The mime4j original version has an error here. It gets confused if // the encoded string begins with an '=' (just after "?Q?"). This patch seeks forward // to find the two '?' in the "header", before looking for the final "?=". int endScan = begin + 2; if (begin != -1) { int qm1 = body.indexOf('?', endScan + 2); int qm2 = body.indexOf('?', qm1 + 1); if (qm2 != -1) { endScan = qm2 + 1; int qm1 = body.indexOf('?', begin + 2); if (qm1 == -1) { sb.append(body.substring(previousEnd)); return sb.toString(); } int qm2 = body.indexOf('?', qm1 + 1); if (qm2 == -1) { sb.append(body.substring(previousEnd)); return sb.toString(); } int end = begin == -1 ? -1 : body.indexOf("?=", endScan); int end = body.indexOf("?=", qm2 + 1); if (end == -1) { if (previousEnd == 0) return body; sb.append(body.substring(previousEnd)); return sb.toString(); } Loading
tests/src/com/fsck/k9/mail/internet/DecoderUtilTest.java +2 −4 Original line number Diff line number Diff line Loading @@ -57,8 +57,7 @@ public class DecoderUtilTest extends TestCase { assertEquals(expect, DecoderUtil.decodeEncodedWords(body, message)); body = "=??q?a?="; expect = "=??q?a?="; //expect = "a"; expect = "a"; message = null; assertEquals(expect, DecoderUtil.decodeEncodedWords(body, message)); Loading Loading @@ -88,8 +87,7 @@ public class DecoderUtilTest extends TestCase { assertEquals(expect, DecoderUtil.decodeEncodedWords(body, message)); body = "=?x?q?X?="; expect = "=?x?q?X?="; //expect = "X"; expect = "X"; message = null; assertEquals(expect, DecoderUtil.decodeEncodedWords(body, message)); Loading