From 781928a58825eba8a3cec10d5f9587e8ed317f71 Mon Sep 17 00:00:00 2001 From: Benoit Blanchon Date: Thu, 10 Mar 2022 15:16:37 +0100 Subject: [PATCH] WIP: is requires a loop --- extras/tests/JsonVariant/link.cpp | 5 +++-- src/ArduinoJson/Variant/VariantRef.hpp | 7 ++++++- 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/extras/tests/JsonVariant/link.cpp b/extras/tests/JsonVariant/link.cpp index cec1f8cb..e8504209 100644 --- a/extras/tests/JsonVariant/link.cpp +++ b/extras/tests/JsonVariant/link.cpp @@ -64,8 +64,9 @@ TEST_CASE("Linked document") { } SECTION("is()") { - CHECK(doc1.is() == true); - CHECK(doc1.is() == false); + CHECK(doc1.is() == false); + CHECK(doc1.is() == true); + CHECK(doc1.is() == false); } SECTION("get member") { diff --git a/src/ArduinoJson/Variant/VariantRef.hpp b/src/ArduinoJson/Variant/VariantRef.hpp index cd78673a..c48a40fc 100644 --- a/src/ArduinoJson/Variant/VariantRef.hpp +++ b/src/ArduinoJson/Variant/VariantRef.hpp @@ -53,7 +53,12 @@ class VariantRefBase : public VariantTag { TData *_data; friend TData *getData(const VariantRefBase &variant) { - return variant._data; + TData *data = variant._data; + if (!data) + return 0; + while (data->isPointer()) + data = data->asPointer; // TODO: test multiple levels + return data; } };