aboutsummaryrefslogtreecommitdiffstats
path: root/java/src
diff options
context:
space:
mode:
authorJean Chalard <jchalard@google.com>2014-06-02 10:09:28 +0000
committerAndroid Git Automerger <android-git-automerger@android.com>2014-06-02 10:09:28 +0000
commitff9c5b9b00d6cdc735e1bbaeeb5dc135d7a76a76 (patch)
tree3426fe7e07f31d286f1a85067dde7d3a367f5b3f /java/src
parent6d4420926f49dc511272c4f211ceb98d5482807e (diff)
parent28538d916c39a7087024daadbd2c6d1c73227ff5 (diff)
downloadlatinime-ff9c5b9b00d6cdc735e1bbaeeb5dc135d7a76a76.tar.gz
latinime-ff9c5b9b00d6cdc735e1bbaeeb5dc135d7a76a76.tar.xz
latinime-ff9c5b9b00d6cdc735e1bbaeeb5dc135d7a76a76.zip
am 28538d91: Merge "Fix an IOOB exception"
* commit '28538d916c39a7087024daadbd2c6d1c73227ff5': Fix an IOOB exception
Diffstat (limited to 'java/src')
-rw-r--r--java/src/com/android/inputmethod/latin/WordComposer.java11
1 files changed, 7 insertions, 4 deletions
diff --git a/java/src/com/android/inputmethod/latin/WordComposer.java b/java/src/com/android/inputmethod/latin/WordComposer.java
index 864942d04..7a50d1a9d 100644
--- a/java/src/com/android/inputmethod/latin/WordComposer.java
+++ b/java/src/com/android/inputmethod/latin/WordComposer.java
@@ -145,9 +145,12 @@ public final class WordComposer {
*/
public int copyCodePointsExceptTrailingSingleQuotesAndReturnCodePointCount(
final int[] destination) {
+ // This method can be called on a separate thread and mTypedWordCache can change while we
+ // are executing this method.
+ final String typedWord = mTypedWordCache.toString();
// lastIndex is exclusive
- final int lastIndex = mTypedWordCache.length()
- - StringUtils.getTrailingSingleQuotesCount(mTypedWordCache);
+ final int lastIndex = typedWord.length()
+ - StringUtils.getTrailingSingleQuotesCount(typedWord);
if (lastIndex <= 0) {
// The string is empty or contains only single quotes.
return 0;
@@ -155,11 +158,11 @@ public final class WordComposer {
// 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);
+ final int codePointSize = Character.codePointCount(typedWord, 0, lastIndex);
if (codePointSize > destination.length) {
return -1;
}
- return StringUtils.copyCodePointsAndReturnCodePointCount(destination, mTypedWordCache, 0,
+ return StringUtils.copyCodePointsAndReturnCodePointCount(destination, typedWord, 0,
lastIndex, true /* downCase */);
}