diff --git a/extras/tests/JsonDeserializer/object.cpp b/extras/tests/JsonDeserializer/object.cpp index becf1599..9bda9776 100644 --- a/extras/tests/JsonDeserializer/object.cpp +++ b/extras/tests/JsonDeserializer/object.cpp @@ -7,6 +7,7 @@ using ArduinoJson::detail::sizeofArray; using ArduinoJson::detail::sizeofObject; +using ArduinoJson::detail::sizeofString; TEST_CASE("deserialize JSON object") { JsonDocument doc(4096); @@ -281,6 +282,7 @@ TEST_CASE("deserialize JSON object") { REQUIRE(err == DeserializationError::Ok); REQUIRE(doc["a"] == 2); + REQUIRE(doc.memoryUsage() == 3 * sizeofObject(1) + sizeofString(1)); } SECTION("Repeated key with zero copy mode") { // issue #1697 diff --git a/src/ArduinoJson/Json/JsonDeserializer.hpp b/src/ArduinoJson/Json/JsonDeserializer.hpp index 5e406c1b..d6b5afee 100644 --- a/src/ArduinoJson/Json/JsonDeserializer.hpp +++ b/src/ArduinoJson/Json/JsonDeserializer.hpp @@ -285,6 +285,8 @@ class JsonDeserializer { slot->setKey(savedKey); object.add(slot); + } else { + variantRelease(slot->data(), pool_); } // Parse value