From a04c3f0189ab0a3af30983ffb0c22762c43c4dd9 Mon Sep 17 00:00:00 2001 From: Benoit Blanchon Date: Thu, 10 Mar 2022 18:31:54 +0100 Subject: [PATCH] Ignore write to member --- extras/tests/JsonVariant/link.cpp | 7 +++++++ src/ArduinoJson/Variant/VariantData.hpp | 2 +- 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/extras/tests/JsonVariant/link.cpp b/extras/tests/JsonVariant/link.cpp index 66421520..c06ff41f 100644 --- a/extras/tests/JsonVariant/link.cpp +++ b/extras/tests/JsonVariant/link.cpp @@ -72,4 +72,11 @@ TEST_CASE("Linked document") { SECTION("get member") { CHECK(variant["hello"].as() == "world"); } + + SECTION("set member") { + // The link is read-only; the following line should have no side effect + variant["tutu"] = "toto"; + + CHECK(doc1.as() == "{\"hello\":\"world\"}"); + } } diff --git a/src/ArduinoJson/Variant/VariantData.hpp b/src/ArduinoJson/Variant/VariantData.hpp index dc8e6fdf..5982b904 100644 --- a/src/ArduinoJson/Variant/VariantData.hpp +++ b/src/ArduinoJson/Variant/VariantData.hpp @@ -314,7 +314,7 @@ class VariantData { TStoragePolicy storage_policy) { if (isNull()) toObject(); - if (!isObject()) + if (!isObjectStrict()) return 0; return _content.asCollection.getOrAddMember(key, pool, storage_policy); }