diff --git a/native/src/unigram_dictionary.cpp b/native/src/unigram_dictionary.cpp
index 334f38e..7e5edff 100644
--- a/native/src/unigram_dictionary.cpp
+++ b/native/src/unigram_dictionary.cpp
@@ -897,9 +897,9 @@
     return true;
 }
 
-inline bool UnigramDictionary::processCurrentNode(const int pos, const int depth,
-        const int maxDepth, const bool traverseAllNodes, int matchWeight, int inputIndex,
-        const int diffs, const int skipPos, const int excessivePos, const int transposedPos,
+inline bool UnigramDictionary::processCurrentNode(const int initialPos, const int initialDepth,
+        const int maxDepth, const bool initialTraverseAllNodes, int matchWeight, int inputIndex,
+        const int initialDiffs, const int skipPos, const int excessivePos, const int transposedPos,
         int *nextLetters, const int nextLettersSize, int *newCount, int *newChildPosition,
         bool *newTraverseAllNodes, int *newMatchRate, int *newInputIndex, int *newDiffs,
         int *nextSiblingPosition, int *nextOutputIndex) {
@@ -916,6 +916,11 @@
     int freq;
     bool isSameAsUserTypedLength = false;
 
+    const int pos = initialPos;
+    const int depth = initialDepth;
+    const int traverseAllNodes = initialTraverseAllNodes;
+    const int diffs = initialDiffs;
+
     const uint8_t flags = 0; // No flags for now
 
     if (excessivePos == depth && inputIndex < mInputLength - 1) ++inputIndex;
@@ -1028,9 +1033,9 @@
     return true;
 }
 
-inline bool UnigramDictionary::processCurrentNode(const int pos, const int depth,
-        const int maxDepth, const bool traverseAllNodes, int matchWeight, int inputIndex,
-        const int diffs, const int skipPos, const int excessivePos, const int transposedPos,
+inline bool UnigramDictionary::processCurrentNode(const int initialPos, const int initialDepth,
+        const int maxDepth, const bool initialTraverseAllNodes, int matchWeight, int inputIndex,
+        const int initialDiffs, const int skipPos, const int excessivePos, const int transposedPos,
         int *nextLetters, const int nextLettersSize, int *newCount, int *newChildPosition,
         bool *newTraverseAllNodes, int *newMatchRate, int *newInputIndex, int *newDiffs,
         int *nextSiblingPosition, int *newOutputIndex) {
@@ -1047,6 +1052,11 @@
     int freq;
     bool isSameAsUserTypedLength = false;
 
+    int pos = initialPos;
+    int depth = initialDepth;
+    int traverseAllNodes = initialTraverseAllNodes;
+    int diffs = initialDiffs;
+
     const uint8_t flags = 0; // No flags for now
 
     if (excessivePos == depth && inputIndex < mInputLength - 1) ++inputIndex;
diff --git a/native/src/unigram_dictionary.h b/native/src/unigram_dictionary.h
index 184e854..c3128bb 100644
--- a/native/src/unigram_dictionary.h
+++ b/native/src/unigram_dictionary.h
@@ -80,12 +80,12 @@
     ProximityType getMatchedProximityId(const int *currentChars, const unsigned short c,
             const int skipPos, const int excessivePos, const int transposedPos);
     // Process a node by considering proximity, missing and excessive character
-    bool processCurrentNode(const int pos, const int depth,
-            const int maxDepth, const bool traverseAllNodes, const int snr, int inputIndex,
-            const int diffs, const int skipPos, const int excessivePos, const int transposedPos,
-            int *nextLetters, const int nextLettersSize, int *newCount, int *newChildPosition,
-            bool *newTraverseAllNodes, int *newSnr, int*newInputIndex, int *newDiffs,
-            int *nextSiblingPosition, int *nextOutputIndex);
+    bool processCurrentNode(const int initialPos, const int initialDepth,
+            const int maxDepth, const bool initialTraverseAllNodes, const int snr, int inputIndex,
+            const int initialDiffs, const int skipPos, const int excessivePos,
+            const int transposedPos, int *nextLetters, const int nextLettersSize, int *newCount,
+            int *newChildPosition, bool *newTraverseAllNodes, int *newSnr, int*newInputIndex,
+            int *newDiffs, int *nextSiblingPosition, int *nextOutputIndex);
     bool existsAdjacentProximityChars(const int inputIndex, const int inputLength) const;
     inline const int* getInputCharsAt(const int index) const {
         return mInputCodes + (index * MAX_PROXIMITY_CHARS);
