diff --git a/native/jni/src/geometry_utils.h b/native/jni/src/geometry_utils.h
index bad5eda..3892b46 100644
--- a/native/jni/src/geometry_utils.h
+++ b/native/jni/src/geometry_utils.h
@@ -64,17 +64,8 @@
     return diff;
 }
 
-// static float pointToLineSegSquaredDistanceFloat(
-//         float x, float y, float x1, float y1, float x2, float y2) {
-//     float A = x - x1;
-//     float B = y - y1;
-//     float C = x2 - x1;
-//     float D = y2 - y1;
-//     return fabsf(A * D - C * B) / sqrtf(C * C + D * D);
-// }
-
 static inline float pointToLineSegSquaredDistanceFloat(
-        float x, float y, float x1, float y1, float x2, float y2) {
+        float x, float y, float x1, float y1, float x2, float y2, bool extend) {
     const float ray1x = x - x1;
     const float ray1y = y - y1;
     const float ray2x = x2 - x1;
@@ -86,10 +77,10 @@
 
     float projectionX;
     float projectionY;
-    if (projectionLengthSqr < 0.0f) {
+    if (!extend && projectionLengthSqr < 0.0f) {
         projectionX = x1;
         projectionY = y1;
-    } else if (projectionLengthSqr > 1.0f) {
+    } else if (!extend && projectionLengthSqr > 1.0f) {
         projectionX = x2;
         projectionY = y2;
     } else {
diff --git a/native/jni/src/proximity_info_state.cpp b/native/jni/src/proximity_info_state.cpp
index ac1a39d..b9fce5f 100644
--- a/native/jni/src/proximity_info_state.cpp
+++ b/native/jni/src/proximity_info_state.cpp
@@ -504,7 +504,7 @@
     if (index >= mInputXs.size()) {
         return filterSize;
     }
-    int i = filterSize;
+    int newFilterSize = filterSize;
     for (int j = 0; j < mProximityInfo->getKeyCount(); ++j) {
         if (mNearKeysVector[index].test(j)) {
             const int32_t keyCodePoint = mProximityInfo->getCodePointOf(j);
@@ -517,11 +517,11 @@
                 }
             }
             if (insert) {
-                filter[i++] = keyCodePoint;
+                filter[newFilterSize++] = keyCodePoint;
             }
         }
     }
-    return i;
+    return newFilterSize;
 }
 
 float ProximityInfoState::getAveragePointDuration() const {
