Merge "Enable Address Sanitizer for native host test 2nd try"
diff --git a/java/src/com/android/inputmethod/event/DeadKeyCombiner.java b/java/src/com/android/inputmethod/event/DeadKeyCombiner.java
index 9d7cc05..7b89b04 100644
--- a/java/src/com/android/inputmethod/event/DeadKeyCombiner.java
+++ b/java/src/com/android/inputmethod/event/DeadKeyCombiner.java
@@ -218,7 +218,10 @@
     @Nonnull
     private static Event createEventChainFromSequence(final @Nonnull CharSequence text,
             @Nonnull final Event originalEvent) {
-        Event lastEvent = originalEvent;
+        if (text.length() <= 0) {
+            return originalEvent;
+        }
+        Event lastEvent = null;
         int codePoint = 0;
         for (int i = text.length(); i > 0; i -= Character.charCount(codePoint)) {
             codePoint = Character.codePointBefore(text, i);
diff --git a/native/jni/src/suggest/core/dicnode/dic_node_utils.cpp b/native/jni/src/suggest/core/dicnode/dic_node_utils.cpp
index 7d2898b..ea43892 100644
--- a/native/jni/src/suggest/core/dicnode/dic_node_utils.cpp
+++ b/native/jni/src/suggest/core/dicnode/dic_node_utils.cpp
@@ -74,8 +74,9 @@
     }
     const WordAttributes wordAttributes = dictionaryStructurePolicy->getWordAttributesInContext(
             dicNode->getPrevWordIds(), dicNode->getWordId(), multiBigramMap);
-    if (dicNode->hasMultipleWords()
-            && (wordAttributes.isBlacklisted() || wordAttributes.isNotAWord())) {
+    if (wordAttributes.getProbability() == NOT_A_PROBABILITY
+            || (dicNode->hasMultipleWords()
+                    && (wordAttributes.isBlacklisted() || wordAttributes.isNotAWord()))) {
         return static_cast<float>(MAX_VALUE_FOR_WEIGHTING);
     }
     // TODO: This equation to calculate the improbability looks unreasonable.  Investigate this.