瀏覽代碼

REVIEWED: EscapeBackslashes() in raylib-parser

Ray 3 年之前
父節點
當前提交
55d310fcc3
共有 1 個文件被更改,包括 18 次插入10 次删除
  1. 18 10
      parser/raylib_parser.c

+ 18 - 10
parser/raylib_parser.c

@@ -139,7 +139,7 @@ static void GetDataTypeAndName(const char *typeName, int typeNameLen, char *type
 static unsigned int TextLength(const char *text);           // Get text length in bytes, check for \0 character
 static bool IsTextEqual(const char *text1, const char *text2, unsigned int count);
 static void MemoryCopy(void *dest, const void *src, unsigned int count);
-static char* EscapeBackslashes(char *text);
+static char *EscapeBackslashes(char *text);                 // Replace '\' by "\\" when exporting to JSON and XML
 
 static void ExportParsedData(const char *fileName, int format); // Export parsed data in desired format
 
@@ -765,18 +765,26 @@ static bool IsTextEqual(const char *text1, const char *text2, unsigned int count
 }
 
 // Escape backslashes in a string, writing the escaped string into a static buffer
-static char* EscapeBackslashes(char *text)
+static char *EscapeBackslashes(char *text)
 {
-    static char buf[256];
-    char *a = text;
-    char *b = buf;
-    do
+    static char buffer[256] = { 0 };
+    
+    int count = 0;
+    
+    for (int i = 0; (text[i] != '\0') && (i < 255); i++, count++)
     {
-        if (*a == '\\') *b++ = '\\';
-        *b++ = *a;
+        buffer[count] = text[i];
+        
+        if (text[i] == '\\') 
+        {
+            buffer[count + 1] = '\\';
+            count++;
+        }
     }
-    while (*a++);
-    return buf;
+    
+    buffer[count] = '\0';
+    
+    return buffer;
 }
 
 /*