Fix ArrayIndexOutOfBoundsException in WordComposer

Bug: 3028277
Change-Id: I1c4d8dca4db8a70f851589d1fbd45a16ea1bfc1b
main
Tadashi G. Takaoka 2010-09-23 12:31:22 +09:00
parent 8493e43148
commit d1a8e3088b
1 changed files with 10 additions and 16 deletions

View File

@ -25,14 +25,14 @@ public class WordComposer {
/**
* The list of unicode values for each keystroke (including surrounding keys)
*/
private ArrayList<int[]> mCodes;
private final ArrayList<int[]> mCodes;
/**
* The word chosen from the candidate list, until it is committed.
*/
private String mPreferredWord;
private StringBuilder mTypedWord;
private final StringBuilder mTypedWord;
private int mCapsCount;
@ -116,11 +116,14 @@ public class WordComposer {
* Delete the last keystroke as a result of hitting backspace.
*/
public void deleteLast() {
mCodes.remove(mCodes.size() - 1);
final int lastPos = mTypedWord.length() - 1;
char last = mTypedWord.charAt(lastPos);
mTypedWord.deleteCharAt(lastPos);
if (Character.isUpperCase(last)) mCapsCount--;
final int codesSize = mCodes.size();
if (codesSize > 0) {
mCodes.remove(codesSize - 1);
final int lastPos = mTypedWord.length() - 1;
char last = mTypedWord.charAt(lastPos);
mTypedWord.deleteCharAt(lastPos);
if (Character.isUpperCase(last)) mCapsCount--;
}
}
/**
@ -132,15 +135,6 @@ public class WordComposer {
if (wordSize == 0) {
return null;
}
// StringBuffer sb = new StringBuffer(wordSize);
// for (int i = 0; i < wordSize; i++) {
// char c = (char) mCodes.get(i)[0];
// if (i == 0 && mIsCapitalized) {
// c = Character.toUpperCase(c);
// }
// sb.append(c);
// }
// return sb;
return mTypedWord;
}