Explorar o código

REVIEW: TextSplit()

Just adding a security check
Ray %!s(int64=6) %!d(string=hai) anos
pai
achega
2f42b0ce85
Modificáronse 1 ficheiros con 16 adicións e 11 borrados
  1. 16 11
      src/text.c

+ 16 - 11
src/text.c

@@ -1372,20 +1372,25 @@ const char **TextSplit(const char *text, char delimiter, int *count)
     memset(buffer, 0, MAX_TEXT_BUFFER_LENGTH);
 
     result[0] = buffer;
-    int counter = 1;
-
-    // Count how many substrings we have on text and point to every one
-    for (int i = 0; i < MAX_TEXT_BUFFER_LENGTH; i++)
+    int counter = 0;
+    
+    if (text != NULL)
     {
-        buffer[i] = text[i];
-        if (buffer[i] == '\0') break;
-        else if (buffer[i] == delimiter)
+        counter = 1;
+        
+        // Count how many substrings we have on text and point to every one
+        for (int i = 0; i < MAX_TEXT_BUFFER_LENGTH; i++)
         {
-            buffer[i] = '\0';   // Set an end of string at this point
-            result[counter] = buffer + i + 1;
-            counter++;
+            buffer[i] = text[i];
+            if (buffer[i] == '\0') break;
+            else if (buffer[i] == delimiter)
+            {
+                buffer[i] = '\0';   // Set an end of string at this point
+                result[counter] = buffer + i + 1;
+                counter++;
 
-            if (counter == MAX_SUBSTRINGS_COUNT) break;
+                if (counter == MAX_SUBSTRINGS_COUNT) break;
+            }
         }
     }