diff --git a/src/ArduinoJson/Array/JsonArray.hpp b/src/ArduinoJson/Array/JsonArray.hpp index 3d8df21c..e727dc45 100644 --- a/src/ArduinoJson/Array/JsonArray.hpp +++ b/src/ArduinoJson/Array/JsonArray.hpp @@ -32,8 +32,8 @@ class JsonArray : public detail::VariantOperators { // https://arduinojson.org/v6/api/jsonvariant/ operator JsonVariant() { void* data = data_; // prevent warning cast-align - return JsonVariant(resources_, - reinterpret_cast(data)); + return JsonVariant(reinterpret_cast(data), + resources_); } // Returns a read-only reference to the array. @@ -46,7 +46,7 @@ class JsonArray : public detail::VariantOperators { // Returns a reference to the new element. // https://arduinojson.org/v6/api/jsonarray/add/ JsonVariant add() const { - return JsonVariant(resources_, collectionAddElement(data_, resources_)); + return JsonVariant(collectionAddElement(data_, resources_), resources_); } // Appends a value to the array. diff --git a/src/ArduinoJson/Array/JsonArrayIterator.hpp b/src/ArduinoJson/Array/JsonArrayIterator.hpp index 1d0c8d35..d4c37175 100644 --- a/src/ArduinoJson/Array/JsonArrayIterator.hpp +++ b/src/ArduinoJson/Array/JsonArrayIterator.hpp @@ -36,7 +36,7 @@ class JsonArrayIterator { : resources_(resources), slot_(slot) {} JsonVariant operator*() const { - return JsonVariant(resources_, slot_->data()); + return JsonVariant(slot_->data(), resources_); } Ptr operator->() { return operator*(); diff --git a/src/ArduinoJson/Document/JsonDocument.hpp b/src/ArduinoJson/Document/JsonDocument.hpp index e0c4e994..192533a8 100644 --- a/src/ArduinoJson/Document/JsonDocument.hpp +++ b/src/ArduinoJson/Document/JsonDocument.hpp @@ -297,7 +297,7 @@ class JsonDocument : public detail::VariantOperators { // Returns a reference to the new element. // https://arduinojson.org/v6/api/jsondocument/add/ FORCE_INLINE JsonVariant add() { - return JsonVariant(&resources_, data_.addElement(&resources_)); + return JsonVariant(data_.addElement(&resources_), &resources_); } // Appends a value to the root array. @@ -352,7 +352,7 @@ class JsonDocument : public detail::VariantOperators { private: JsonVariant getVariant() { - return JsonVariant(&resources_, &data_); + return JsonVariant(&data_, &resources_); } JsonVariantConst getVariant() const { diff --git a/src/ArduinoJson/Object/JsonObject.hpp b/src/ArduinoJson/Object/JsonObject.hpp index 7f5e03e4..565c9bad 100644 --- a/src/ArduinoJson/Object/JsonObject.hpp +++ b/src/ArduinoJson/Object/JsonObject.hpp @@ -29,8 +29,8 @@ class JsonObject : public detail::VariantOperators { operator JsonVariant() const { void* data = data_; // prevent warning cast-align - return JsonVariant(resources_, - reinterpret_cast(data)); + return JsonVariant(reinterpret_cast(data), + resources_); } operator JsonObjectConst() const { diff --git a/src/ArduinoJson/Object/JsonPair.hpp b/src/ArduinoJson/Object/JsonPair.hpp index 1066fd5d..252e9612 100644 --- a/src/ArduinoJson/Object/JsonPair.hpp +++ b/src/ArduinoJson/Object/JsonPair.hpp @@ -19,7 +19,7 @@ class JsonPair { if (slot) { key_ = JsonString(slot->key(), slot->ownsKey() ? JsonString::Copied : JsonString::Linked); - value_ = JsonVariant(resources, slot->data()); + value_ = JsonVariant(slot->data(), resources); } } diff --git a/src/ArduinoJson/Variant/JsonVariant.hpp b/src/ArduinoJson/Variant/JsonVariant.hpp index 9e56849b..f7d1024c 100644 --- a/src/ArduinoJson/Variant/JsonVariant.hpp +++ b/src/ArduinoJson/Variant/JsonVariant.hpp @@ -19,7 +19,7 @@ class JsonVariant : public detail::VariantRefBase, JsonVariant() : data_(0), resources_(0) {} // INTERNAL USE ONLY - JsonVariant(detail::ResourceManager* resources, detail::VariantData* data) + JsonVariant(detail::VariantData* data, detail::ResourceManager* resources) : data_(data), resources_(resources) {} private: @@ -85,19 +85,18 @@ ARDUINOJSON_BEGIN_PRIVATE_NAMESPACE template inline JsonVariant VariantRefBase::add() const { - return JsonVariant( - getResourceManager(), - variantAddElement(getOrCreateData(), getResourceManager())); + return JsonVariant(variantAddElement(getOrCreateData(), getResourceManager()), + getResourceManager()); } template inline JsonVariant VariantRefBase::getVariant() const { - return JsonVariant(getResourceManager(), getData()); + return JsonVariant(getData(), getResourceManager()); } template inline JsonVariant VariantRefBase::getOrCreateVariant() const { - return JsonVariant(getResourceManager(), getOrCreateData()); + return JsonVariant(getOrCreateData(), getResourceManager()); } template