Fix possible SIOOBE

Bug: 8461021

Change-Id: I8b0385610b80b5a672ec380935c485a0e01ae984
This commit is contained in:
Satoshi Kataoka 2013-03-26 14:38:35 +09:00
parent 0b3271010f
commit 33306acfa4

View file

@ -18,6 +18,7 @@ package com.android.inputmethod.latin;
import android.content.Context; import android.content.Context;
import android.text.TextUtils; import android.text.TextUtils;
import android.util.Log;
import com.android.inputmethod.keyboard.ProximityInfo; import com.android.inputmethod.keyboard.ProximityInfo;
import com.android.inputmethod.latin.SuggestedWords.SuggestedWordInfo; import com.android.inputmethod.latin.SuggestedWords.SuggestedWordInfo;
@ -31,6 +32,7 @@ import java.util.LinkedList;
* be searched for suggestions and valid words. * be searched for suggestions and valid words.
*/ */
public class ExpandableDictionary extends Dictionary { public class ExpandableDictionary extends Dictionary {
private static final String TAG = ExpandableDictionary.class.getSimpleName();
/** /**
* The weight to give to a word if it's length is the same as the number of typed characters. * The weight to give to a word if it's length is the same as the number of typed characters.
*/ */
@ -551,8 +553,13 @@ public class ExpandableDictionary extends Dictionary {
// word. We do want however to return the correct case for the right hand side. // word. We do want however to return the correct case for the right hand side.
// So we want to squash the case of the left hand side, and preserve that of the right // So we want to squash the case of the left hand side, and preserve that of the right
// hand side word. // hand side word.
Node firstWord = searchWord(mRoots, word1.toLowerCase(), 0, null); final String word1Lower = word1.toLowerCase();
Node secondWord = searchWord(mRoots, word2, 0, null); if (TextUtils.isEmpty(word1Lower) || TextUtils.isEmpty(word2)) {
Log.e(TAG, "Invalid bigram pair: " + word1 + ", " + word1Lower + ", " + word2);
return frequency;
}
final Node firstWord = searchWord(mRoots, word1Lower, 0, null);
final Node secondWord = searchWord(mRoots, word2, 0, null);
LinkedList<NextWord> bigrams = firstWord.mNGrams; LinkedList<NextWord> bigrams = firstWord.mNGrams;
if (bigrams == null || bigrams.size() == 0) { if (bigrams == null || bigrams.size() == 0) {
firstWord.mNGrams = CollectionUtils.newLinkedList(); firstWord.mNGrams = CollectionUtils.newLinkedList();