completion: fix tests 55/20755/2
Clément DAVID [Mon, 28 Jan 2019 22:16:59 +0000 (23:16 +0100)]
Change-Id: I018739cdbad191de790232a7168138698155f8f3

scilab/modules/completion/src/c/completeLine.c

index ecb3895..eda98ea 100644 (file)
@@ -56,9 +56,14 @@ static int findMatchingPrefixSuffix(const char* string, const char* find, BOOL s
         }
     }
 
-    //Tips : no infinite loop there, tmpfind string length is always reduced at each iteration
+    // as we try to "find" within "string", "find" should be smaller than or equal to "string"
+    if (strlen(pointerOnFindCopy) > strlen(string))
+    {
+        pointerOnFindCopy[strlen(string)] = '\0';
+    }
     movingPointerOnFindCopy = strrchr(pointerOnFindCopy, toupper(lastchar));
 
+    //Tips : no infinite loop there, tmpfind string length is always reduced at each iteration
     while ( movingPointerOnFindCopy )
     {
         //find the last occurence of last char of string in tmpfind
@@ -69,21 +74,6 @@ static int findMatchingPrefixSuffix(const char* string, const char* find, BOOL s
         }
         // Cut tmpfind at this position
         movingPointerOnFindCopy[0] = '\0';
-        // if a prefix is already found and could not grow anymore, return what we found
-        if (stringLength < strlen(pointerOnFindCopy))
-        {
-            FREE(pointerOnFindCopy);
-            pointerOnFindCopy = NULL;
-
-            if (pointerOnString)
-            {
-                return (int)(pointerOnString - string);
-            }
-            else
-            {
-                return stringLength;
-            }
-        }
         //Check if the cutted tmpfind match with the suffix of string that has adequat length
         pointerOnString = (char*)(string + stringLength - 1 - strlen(pointerOnFindCopy));
         if ( !strnicmp(pointerOnFindCopy, pointerOnString, strlen(pointerOnFindCopy)) )