diff --git a/cJSON_Utils.c b/cJSON_Utils.c index 79e052b..3a535b1 100644 --- a/cJSON_Utils.c +++ b/cJSON_Utils.c @@ -173,13 +173,14 @@ static void encode_string_as_pointer(unsigned char *destination, const unsigned { if (source[0] == '/') { + destination[0] = '~'; destination[1] = '1'; destination++; } else if (source[0] == '~') { destination[0] = '~'; - destination[1] = '1'; + destination[1] = '0'; destination++; } else diff --git a/tests/old_utils_tests.c b/tests/old_utils_tests.c index 08da6a6..690dbb5 100644 --- a/tests/old_utils_tests.c +++ b/tests/old_utils_tests.c @@ -90,6 +90,10 @@ static void misc_tests(void) /* Misc tests */ int numbers[10] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9}; cJSON *object = NULL; + cJSON *object1 = NULL; + cJSON *object2 = NULL; + cJSON *object3 = NULL; + cJSON *object4 = NULL; cJSON *nums = NULL; cJSON *num6 = NULL; char *pointer = NULL; @@ -112,7 +116,23 @@ static void misc_tests(void) TEST_ASSERT_EQUAL_STRING("", pointer); free(pointer); + object1 = cJSON_CreateObject(); + object2 = cJSON_CreateString("m~n"); + cJSON_AddItemToObject(object1, "m~n", object2); + pointer = cJSONUtils_FindPointerFromObjectTo(object1, object2); + TEST_ASSERT_EQUAL_STRING("/m~0n",pointer); + free(pointer); + + object3 = cJSON_CreateObject(); + object4 = cJSON_CreateString("m/n"); + cJSON_AddItemToObject(object3, "m/n", object4); + pointer = cJSONUtils_FindPointerFromObjectTo(object3, object4); + TEST_ASSERT_EQUAL_STRING("/m~1n",pointer); + free(pointer); + cJSON_Delete(object); + cJSON_Delete(object1); + cJSON_Delete(object3); } static void sort_tests(void)