From 825e2bbd910cce3055a4ca808d3744bc0b2cedda Mon Sep 17 00:00:00 2001 From: Jean Chalard Date: Fri, 3 Feb 2012 12:22:02 +0900 Subject: Fix a bug when deleting the last char And unit test Change-Id: Ic4fc3626f8b86e10156d770d41cd6deab5d31f39 --- java/src/com/android/inputmethod/latin/WordComposer.java | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) (limited to 'java/src') diff --git a/java/src/com/android/inputmethod/latin/WordComposer.java b/java/src/com/android/inputmethod/latin/WordComposer.java index fa1b5ef6c..dd24432f7 100644 --- a/java/src/com/android/inputmethod/latin/WordComposer.java +++ b/java/src/com/android/inputmethod/latin/WordComposer.java @@ -212,6 +212,7 @@ public class WordComposer { final int lastPos = size - 1; char lastChar = mTypedWord.charAt(lastPos); mCodes.remove(lastPos); + // TODO: This crashes and catches fire if the code point doesn't fit a char mTypedWord.deleteCharAt(lastPos); if (Character.isUpperCase(lastChar)) mCapsCount--; } @@ -221,8 +222,9 @@ public class WordComposer { if (mTrailingSingleQuotesCount > 0) { --mTrailingSingleQuotesCount; } else { - for (int i = mTypedWord.offsetByCodePoints(mTypedWord.length(), -1); - i >= 0; i = mTypedWord.offsetByCodePoints(i, -1)) { + int i = mTypedWord.length(); + while (i > 0) { + i = mTypedWord.offsetByCodePoints(i, -1); if (Keyboard.CODE_SINGLE_QUOTE != mTypedWord.codePointAt(i)) break; ++mTrailingSingleQuotesCount; } -- cgit v1.2.3-83-g751a