diff --git a/java/src/com/android/inputmethod/latin/BinaryDictionary.java b/java/src/com/android/inputmethod/latin/BinaryDictionary.java
index 3b3315d..feff2f2 100644
--- a/java/src/com/android/inputmethod/latin/BinaryDictionary.java
+++ b/java/src/com/android/inputmethod/latin/BinaryDictionary.java
@@ -122,8 +122,6 @@
             }
         }
 
-        // TODO: move this test to native code.
-        if (composerSize <= 1 && TextUtils.isEmpty(prevWord)) return null;
         final InputPointers ips = composer.getInputPointers();
         final int codesSize = isGesture ? ips.getPointerSize() : composerSize;
         // proximityInfo and/or prevWordForBigrams may not be null.
diff --git a/java/src/com/android/inputmethod/latin/Suggest.java b/java/src/com/android/inputmethod/latin/Suggest.java
index 31c6000..bbd415f 100644
--- a/java/src/com/android/inputmethod/latin/Suggest.java
+++ b/java/src/com/android/inputmethod/latin/Suggest.java
@@ -194,12 +194,10 @@
         }
         if (wordComposerForLookup.size() <= 1) {
             // At first character typed, search only the bigrams
-            if (!TextUtils.isEmpty(prevWordForBigram)) {
-                for (final String key : mDictionaries.keySet()) {
-                    final Dictionary dictionary = mDictionaries.get(key);
-                    suggestionsSet.addAll(dictionary.getSuggestions(wordComposerForLookup,
-                            prevWordForBigram, proximityInfo));
-                }
+            for (final String key : mDictionaries.keySet()) {
+                final Dictionary dictionary = mDictionaries.get(key);
+                suggestionsSet.addAll(dictionary.getSuggestions(
+                        wordComposerForLookup, prevWordForBigram, proximityInfo));
             }
         } else {
             // At second character typed, search the unigrams (scores being affected by bigrams)
diff --git a/native/jni/src/dictionary.h b/native/jni/src/dictionary.h
index eb6cc96..c8a21e0 100644
--- a/native/jni/src/dictionary.h
+++ b/native/jni/src/dictionary.h
@@ -60,6 +60,7 @@
 
     int getBigrams(const int32_t *word, int length, int *codes, int codesSize,
             unsigned short *outWords, int *frequencies) const {
+        if (length <= 0) return 0;
         return mBigramDictionary->getBigrams(word, length, codes, codesSize, outWords, frequencies);
     }
 
