mirror of
https://github.com/DaveGamble/cJSON.git
synced 2023-08-10 21:13:26 +03:00
cJSON_Compare: Fix comparison of arrays
It did consider two arrays equal if one is a prefix of the other one, which is incorrect. See #180
This commit is contained in:
parent
b9cc911831
commit
569aa060c6
5
cJSON.c
5
cJSON.c
@ -2594,6 +2594,11 @@ CJSON_PUBLIC(cJSON_bool) cJSON_Compare(const cJSON * const a, const cJSON * cons
|
|||||||
b_element = b_element->next;
|
b_element = b_element->next;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* one of the arrays is longer than the other */
|
||||||
|
if (a_element != b_element) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -148,6 +148,10 @@ static void cjson_compare_should_compare_arrays(void)
|
|||||||
|
|
||||||
TEST_ASSERT_FALSE(compare_from_string("[true,null,42,\"string\",[],{}]", "[false, true, null, 42, \"string\", [], {}]", true));
|
TEST_ASSERT_FALSE(compare_from_string("[true,null,42,\"string\",[],{}]", "[false, true, null, 42, \"string\", [], {}]", true));
|
||||||
TEST_ASSERT_FALSE(compare_from_string("[true,null,42,\"string\",[],{}]", "[false, true, null, 42, \"string\", [], {}]", false));
|
TEST_ASSERT_FALSE(compare_from_string("[true,null,42,\"string\",[],{}]", "[false, true, null, 42, \"string\", [], {}]", false));
|
||||||
|
|
||||||
|
/* Arrays that are a prefix of another array */
|
||||||
|
TEST_ASSERT_FALSE(compare_from_string("[1,2,3]", "[1,2]", true));
|
||||||
|
TEST_ASSERT_FALSE(compare_from_string("[1,2,3]", "[1,2]", false));
|
||||||
}
|
}
|
||||||
|
|
||||||
static void cjson_compare_should_compare_objects(void)
|
static void cjson_compare_should_compare_objects(void)
|
||||||
|
Loading…
Reference in New Issue
Block a user