diff --git a/src/ArduinoJson/Json/JsonSerializer.hpp b/src/ArduinoJson/Json/JsonSerializer.hpp index db5803c9..7c6f6424 100644 --- a/src/ArduinoJson/Json/JsonSerializer.hpp +++ b/src/ArduinoJson/Json/JsonSerializer.hpp @@ -25,7 +25,7 @@ class JsonSerializer : public Visitor { VariantSlot *slot = array.head(); while (slot != 0) { - slot->data()->accept(*this); + slot->data()->resolve()->accept(*this); slot = slot->next(); if (slot == 0) @@ -46,7 +46,7 @@ class JsonSerializer : public Visitor { while (slot != 0) { _formatter.writeString(slot->key()); write(':'); - slot->data()->accept(*this); + slot->data()->resolve()->accept(*this); slot = slot->next(); if (slot == 0) diff --git a/src/ArduinoJson/Json/PrettyJsonSerializer.hpp b/src/ArduinoJson/Json/PrettyJsonSerializer.hpp index cbd66540..3f7fd262 100644 --- a/src/ArduinoJson/Json/PrettyJsonSerializer.hpp +++ b/src/ArduinoJson/Json/PrettyJsonSerializer.hpp @@ -25,7 +25,7 @@ class PrettyJsonSerializer : public JsonSerializer { _nesting++; while (slot != 0) { indent(); - slot->data()->accept(*this); + slot->data()->resolve()->accept(*this); slot = slot->next(); base::write(slot ? ",\r\n" : "\r\n"); @@ -48,7 +48,7 @@ class PrettyJsonSerializer : public JsonSerializer { indent(); base::visitString(slot->key()); base::write(": "); - slot->data()->accept(*this); + slot->data()->resolve()->accept(*this); slot = slot->next(); base::write(slot ? ",\r\n" : "\r\n"); diff --git a/src/ArduinoJson/MsgPack/MsgPackSerializer.hpp b/src/ArduinoJson/MsgPack/MsgPackSerializer.hpp index a1053f0a..8cf99801 100644 --- a/src/ArduinoJson/MsgPack/MsgPackSerializer.hpp +++ b/src/ArduinoJson/MsgPack/MsgPackSerializer.hpp @@ -56,7 +56,7 @@ class MsgPackSerializer : public Visitor { writeInteger(uint32_t(n)); } for (VariantSlot* slot = array.head(); slot; slot = slot->next()) { - slot->data()->accept(*this); + slot->data()->resolve()->accept(*this); } return bytesWritten(); } @@ -74,7 +74,7 @@ class MsgPackSerializer : public Visitor { } for (VariantSlot* slot = object.head(); slot; slot = slot->next()) { visitString(slot->key()); - slot->data()->accept(*this); + slot->data()->resolve()->accept(*this); } return bytesWritten(); } diff --git a/src/ArduinoJson/Variant/VariantData.hpp b/src/ArduinoJson/Variant/VariantData.hpp index a79164f9..6f152cd3 100644 --- a/src/ArduinoJson/Variant/VariantData.hpp +++ b/src/ArduinoJson/Variant/VariantData.hpp @@ -68,10 +68,6 @@ class VariantData { case VALUE_IS_BOOLEAN: return visitor.visitBoolean(_content.asBoolean != 0); - case VALUE_IS_POINTER: // P+0 G+46 - ARDUINOJSON_ASSERT(_content.asPointer != 0); - return _content.asPointer->accept(visitor); - default: return visitor.visitNull(); } diff --git a/src/ArduinoJson/Variant/VariantFunctions.hpp b/src/ArduinoJson/Variant/VariantFunctions.hpp index e5cb4296..843f01f2 100644 --- a/src/ArduinoJson/Variant/VariantFunctions.hpp +++ b/src/ArduinoJson/Variant/VariantFunctions.hpp @@ -14,7 +14,7 @@ template inline typename TVisitor::result_type variantAccept(const VariantData *var, TVisitor &visitor) { if (var != 0) - return var->accept(visitor); + return var->resolve()->accept(visitor); else return visitor.visitNull(); }