Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 1250cdea authored by Tadashi G. Takaoka's avatar Tadashi G. Takaoka
Browse files

Workaround to avoid a bug in the batch input bigram dictionary lookup

Change-Id: I8a5641c88c45918d6bed81a0b03efdcff0b380c5
parent 9c09fd02
Loading
Loading
Loading
Loading
+8 −4
Original line number Diff line number Diff line
@@ -111,9 +111,14 @@ public class BinaryDictionary extends Dictionary {
        Arrays.fill(mInputCodes, WordComposer.NOT_A_CODE);
        Arrays.fill(mOutputChars, (char) 0);
        Arrays.fill(mOutputScores, 0);
        final boolean isGesture = composer.isBatchMode();
        final boolean isValidPrevWord = (prevWord == null)
                // TODO: Remove this check. Unfortunately the current gesture recognition code has
                // a double-free bug.
                && !isGesture;
        // TODO: toLowerCase in the native code
        final int[] prevWordCodePointArray = (null == prevWord)
                ? null : StringUtils.toCodePointArray(prevWord.toString());
        final int[] prevWordCodePointArray = isValidPrevWord
                ? StringUtils.toCodePointArray(prevWord.toString()) : null;
        final int composerSize = composer.size();

        if (composerSize <= 1 || !composer.isBatchMode()) {
@@ -124,7 +129,7 @@ public class BinaryDictionary extends Dictionary {
        }

        final int count;
        if (!composer.isBatchMode() && composer.size() <= 1) {
        if (!isGesture && composer.size() <= 1) {
            if (TextUtils.isEmpty(prevWord)) return null;
            int tmpCount = getBigramsNative(mNativeDict, prevWordCodePointArray,
                    prevWordCodePointArray.length, mInputCodes, composerSize,
@@ -132,7 +137,6 @@ public class BinaryDictionary extends Dictionary {
            count = Math.min(tmpCount, MAX_BIGRAMS);
        } else {
            final InputPointers ips = composer.getInputPointers();
            final boolean isGesture = composer.isBatchMode();
            final int codesSize;
            if (isGesture) {
                codesSize = ips.getPointerSize();