mirror of https://github.com/DaveGamble/cJSON
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;
|
||||
}
|
||||
|
||||
/* one of the arrays is longer than the other */
|
||||
if (a_element != b_element) {
|
||||
return false;
|
||||
}
|
||||
|
||||
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\", [], {}]", 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)
|
||||
|
|
Loading…
Reference in New Issue