diff --git a/src/ArduinoJson/Variant/VariantData.hpp b/src/ArduinoJson/Variant/VariantData.hpp index 767e1a49..e99400fd 100644 --- a/src/ArduinoJson/Variant/VariantData.hpp +++ b/src/ArduinoJson/Variant/VariantData.hpp @@ -291,8 +291,8 @@ class VariantData { } template - VariantData *getMember(TAdaptedString key) const { // P+4 G+0 - const CollectionData *col = resolve()->asObject(); + VariantData *getMember(TAdaptedString key) const { + const CollectionData *col = asObject(); return col ? col->getMember(key) : 0; } diff --git a/src/ArduinoJson/Variant/VariantImpl.hpp b/src/ArduinoJson/Variant/VariantImpl.hpp index 13a02f67..9be59a74 100644 --- a/src/ArduinoJson/Variant/VariantImpl.hpp +++ b/src/ArduinoJson/Variant/VariantImpl.hpp @@ -143,13 +143,16 @@ inline VariantRef VariantRef::getOrAddElement(size_t index) const { template inline VariantRef VariantRef::getMember(TChar *key) const { - return VariantRef(_pool, _data != 0 ? _data->getMember(adaptString(key)) : 0); + return VariantRef( // TODO: this returns a mutable reference to a linked + // object + _pool, _data != 0 ? _data->resolve()->getMember(adaptString(key)) : 0); } template inline typename enable_if::value, VariantRef>::type VariantRef::getMember(const TString &key) const { - return VariantRef(_pool, _data != 0 ? _data->getMember(adaptString(key)) : 0); + return VariantRef( // TODO: idem + _pool, _data != 0 ? _data->resolve()->getMember(adaptString(key)) : 0); } template