refactor cJSONUtils_PointerEncodedstrcpy

This commit is contained in:
Max Bruckner
2017-05-02 01:30:58 +02:00
parent b8e3673d0f
commit 674a678819
+12 -10
View File
@@ -123,27 +123,29 @@ static size_t cJSONUtils_PointerEncodedstrlen(const unsigned char *string)
return length; return length;
} }
static void cJSONUtils_PointerEncodedstrcpy(unsigned char *d, const unsigned char *s) /* copy a string while escaping '~' and '/' with ~0 and ~1 JSON pointer escape codes */
static void cJSONUtils_PointerEncodedstrcpy(unsigned char *destination, const unsigned char *source)
{ {
for (; *s; s++) for (; source[0] != '\0'; (void)source++, destination++)
{ {
if (*s == '/') if (source[0] == '/')
{ {
*d++ = '~'; destination[1] = '1';
*d++ = '1'; destination++;
} }
else if (*s == '~') else if (source[0] == '~')
{ {
*d++ = '~'; destination[0] = '~';
*d++ = '0'; destination[1] = '1';
destination++;
} }
else else
{ {
*d++ = *s; destination[0] = source[0];
} }
} }
*d = '\0'; destination[0] = '\0';
} }
CJSON_PUBLIC(char *) cJSONUtils_FindPointerFromObjectTo(cJSON *object, cJSON *target) CJSON_PUBLIC(char *) cJSONUtils_FindPointerFromObjectTo(cJSON *object, cJSON *target)