forked from bblanchon/ArduinoJson
Fix memory leak in JsonDeserializer
when object key is repeated
This commit is contained in:
@ -7,6 +7,7 @@
|
|||||||
|
|
||||||
using ArduinoJson::detail::sizeofArray;
|
using ArduinoJson::detail::sizeofArray;
|
||||||
using ArduinoJson::detail::sizeofObject;
|
using ArduinoJson::detail::sizeofObject;
|
||||||
|
using ArduinoJson::detail::sizeofString;
|
||||||
|
|
||||||
TEST_CASE("deserialize JSON object") {
|
TEST_CASE("deserialize JSON object") {
|
||||||
JsonDocument doc(4096);
|
JsonDocument doc(4096);
|
||||||
@ -281,6 +282,7 @@ TEST_CASE("deserialize JSON object") {
|
|||||||
|
|
||||||
REQUIRE(err == DeserializationError::Ok);
|
REQUIRE(err == DeserializationError::Ok);
|
||||||
REQUIRE(doc["a"] == 2);
|
REQUIRE(doc["a"] == 2);
|
||||||
|
REQUIRE(doc.memoryUsage() == 3 * sizeofObject(1) + sizeofString(1));
|
||||||
}
|
}
|
||||||
|
|
||||||
SECTION("Repeated key with zero copy mode") { // issue #1697
|
SECTION("Repeated key with zero copy mode") { // issue #1697
|
||||||
|
@ -285,6 +285,8 @@ class JsonDeserializer {
|
|||||||
|
|
||||||
slot->setKey(savedKey);
|
slot->setKey(savedKey);
|
||||||
object.add(slot);
|
object.add(slot);
|
||||||
|
} else {
|
||||||
|
variantRelease(slot->data(), pool_);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Parse value
|
// Parse value
|
||||||
|
Reference in New Issue
Block a user