diff --git a/src/ArduinoJson/Array/ArrayImpl.hpp b/src/ArduinoJson/Array/ArrayImpl.hpp index 47467e04..3fdcb554 100644 --- a/src/ArduinoJson/Array/ArrayImpl.hpp +++ b/src/ArduinoJson/Array/ArrayImpl.hpp @@ -20,6 +20,9 @@ inline ArrayImpl::iterator ArrayImpl::at(size_t index) const { } inline VariantData* ArrayImpl::addElement() { + if (!data_) + return nullptr; + ARDUINOJSON_ASSERT(resources_ != nullptr); auto slot = resources_->allocVariant(); if (!slot) return nullptr; diff --git a/src/ArduinoJson/Collection/CollectionImpl.hpp b/src/ArduinoJson/Collection/CollectionImpl.hpp index 70a615bd..ef8247e1 100644 --- a/src/ArduinoJson/Collection/CollectionImpl.hpp +++ b/src/ArduinoJson/Collection/CollectionImpl.hpp @@ -32,6 +32,9 @@ inline CollectionImpl::iterator CollectionImpl::createIterator() const { } inline void CollectionImpl::appendOne(Slot slot) { + ARDUINOJSON_ASSERT(data_ != nullptr); + ARDUINOJSON_ASSERT(resources_ != nullptr); + if (data_->tail != NULL_SLOT) { auto tail = resources_->getVariant(data_->tail); tail->setNext(slot.id()); @@ -44,6 +47,9 @@ inline void CollectionImpl::appendOne(Slot slot) { inline void CollectionImpl::appendPair(Slot key, Slot value) { + ARDUINOJSON_ASSERT(data_ != nullptr); + ARDUINOJSON_ASSERT(resources_ != nullptr); + key->setNext(value.id()); if (data_->tail != NULL_SLOT) { diff --git a/src/ArduinoJson/Object/ObjectImpl.hpp b/src/ArduinoJson/Object/ObjectImpl.hpp index 9d4ee5cf..41f6d0a3 100644 --- a/src/ArduinoJson/Object/ObjectImpl.hpp +++ b/src/ArduinoJson/Object/ObjectImpl.hpp @@ -47,6 +47,10 @@ inline void ObjectImpl::removeMember(TAdaptedString key) { template inline VariantData* ObjectImpl::addMember(TAdaptedString key) { + if (!data_) + return nullptr; + ARDUINOJSON_ASSERT(resources_ != nullptr); + auto keySlot = resources_->allocVariant(); if (!keySlot) return nullptr; @@ -64,6 +68,10 @@ inline VariantData* ObjectImpl::addMember(TAdaptedString key) { } inline VariantData* ObjectImpl::addPair(VariantData** value) { + if (!data_) + return nullptr; + ARDUINOJSON_ASSERT(resources_ != nullptr); + auto keySlot = resources_->allocVariant(); if (!keySlot) return nullptr;