diff options
| author | 2011-04-04 09:41:10 -0700 | |
|---|---|---|
| committer | 2011-04-04 09:41:10 -0700 | |
| commit | 2ed72048828cf9f617da971e5d2b8a062de08e5b (patch) | |
| tree | 5118a34816a3466290ab255c06df2c7b1c1f5348 | |
| parent | e558a0000389a2523b8d3d3a787db6b4579d2bdc (diff) | |
| parent | 114f98a75334813fe116da3d95567db8984d45b9 (diff) | |
Merge "Always return a valid index from Rfc822Tokenizer.findTokenEnd()"
| -rw-r--r-- | core/java/android/text/util/Rfc822Tokenizer.java | 4 | ||||
| -rw-r--r-- | core/tests/coretests/src/android/text/TextUtilsTest.java | 17 |
2 files changed, 19 insertions, 2 deletions
diff --git a/core/java/android/text/util/Rfc822Tokenizer.java b/core/java/android/text/util/Rfc822Tokenizer.java index 69cf93cf35fc..68334e4d927c 100644 --- a/core/java/android/text/util/Rfc822Tokenizer.java +++ b/core/java/android/text/util/Rfc822Tokenizer.java @@ -256,7 +256,7 @@ public class Rfc822Tokenizer implements MultiAutoCompleteTextView.Tokenizer { if (c == '"') { i++; break; - } else if (c == '\\') { + } else if (c == '\\' && i + 1 < len) { i += 2; } else { i++; @@ -275,7 +275,7 @@ public class Rfc822Tokenizer implements MultiAutoCompleteTextView.Tokenizer { } else if (c == '(') { level++; i++; - } else if (c == '\\') { + } else if (c == '\\' && i + 1 < len) { i += 2; } else { i++; diff --git a/core/tests/coretests/src/android/text/TextUtilsTest.java b/core/tests/coretests/src/android/text/TextUtilsTest.java index e111662c2ec2..79d57f1be831 100644 --- a/core/tests/coretests/src/android/text/TextUtilsTest.java +++ b/core/tests/coretests/src/android/text/TextUtilsTest.java @@ -255,6 +255,23 @@ public class TextUtilsTest extends TestCase { assertEquals("Foo Bar", tokens[0].getAddress()); } + @SmallTest + public void testRfc822FindToken() { + Rfc822Tokenizer tokenizer = new Rfc822Tokenizer(); + // 0 1 2 3 4 + // 0 1234 56789012345678901234 5678 90123456789012345 + String address = "\"Foo\" <foo@google.com>, \"Bar\" <bar@google.com>"; + assertEquals(0, tokenizer.findTokenStart(address, 21)); + assertEquals(22, tokenizer.findTokenEnd(address, 21)); + assertEquals(24, tokenizer.findTokenStart(address, 25)); + assertEquals(46, tokenizer.findTokenEnd(address, 25)); + } + + @SmallTest + public void testRfc822FindTokenWithError() { + assertEquals(9, new Rfc822Tokenizer().findTokenEnd("\"Foo Bar\\", 0)); + } + @LargeTest public void testEllipsize() { CharSequence s1 = "The quick brown fox jumps over \u00FEhe lazy dog."; |