Merge "Fix a bug for counting code points in WordComposer.java"

main
Xiaojun Bi 2014-04-19 01:03:17 +00:00 committed by Android (Google) Code Review
commit 8e95b2f5a7
2 changed files with 11 additions and 8 deletions

View File

@ -260,7 +260,7 @@ public final class BinaryDictionary extends Dictionary {
final int inputSize;
if (!isGesture) {
inputSize = composer.copyCodePointsExceptTrailingSingleQuotesAndReturnCodePointCount(
mInputCodePoints, MAX_WORD_LENGTH);
mInputCodePoints);
if (inputSize < 0) {
return null;
}

View File

@ -129,22 +129,25 @@ public final class WordComposer {
* -1 is returned.
*
* @param destination the array of ints.
* @param maxSize the size of the array.
* @return the number of copied code points.
*/
public int copyCodePointsExceptTrailingSingleQuotesAndReturnCodePointCount(
final int[] destination, final int maxSize) {
final int i = mTypedWordCache.length() - 1 - trailingSingleQuotesCount();
if (i < 0) {
final int[] destination) {
// lastIndex is exclusive
final int lastIndex = mTypedWordCache.length() - trailingSingleQuotesCount();
if (lastIndex <= 0) {
// The string is empty or contains only single quotes.
return 0;
}
final int codePointSize = Character.codePointCount(mTypedWordCache, 0, i);
if (codePointSize > maxSize) {
// The following function counts the number of code points in the text range which begins
// at index 0 and extends to the character at lastIndex.
final int codePointSize = Character.codePointCount(mTypedWordCache, 0, lastIndex);
if (codePointSize > destination.length) {
return -1;
}
return StringUtils.copyCodePointsAndReturnCodePointCount(destination, mTypedWordCache, 0,
i + 1, true /* downCase */);
lastIndex, true /* downCase */);
}
public boolean isSingleLetter() {