mirror of
https://github.com/bblanchon/ArduinoJson.git
synced 2025-07-29 10:17:39 +02:00
CollectionData: allocate the slot in addSlot()
This commit is contained in:
@ -19,11 +19,7 @@ inline ArrayData::iterator ArrayData::at(size_t index) const {
|
||||
}
|
||||
|
||||
inline VariantData* ArrayData::addElement(ResourceManager* resources) {
|
||||
auto slot = resources->allocVariant();
|
||||
if (!slot)
|
||||
return nullptr;
|
||||
addSlot(slot);
|
||||
return slot->data();
|
||||
return slotData(addSlot(resources));
|
||||
}
|
||||
|
||||
inline bool ArrayData::copyFrom(const ArrayData& src,
|
||||
|
@ -107,7 +107,7 @@ class CollectionData {
|
||||
}
|
||||
|
||||
protected:
|
||||
void addSlot(VariantSlot*);
|
||||
VariantSlot* addSlot(ResourceManager*);
|
||||
|
||||
private:
|
||||
VariantSlot* getPreviousSlot(VariantSlot*) const;
|
||||
|
@ -27,9 +27,10 @@ inline void CollectionIterator::next() {
|
||||
slot_ = slot_->next();
|
||||
}
|
||||
|
||||
inline void CollectionData::addSlot(VariantSlot* slot) {
|
||||
ARDUINOJSON_ASSERT(slot != nullptr);
|
||||
|
||||
inline VariantSlot* CollectionData::addSlot(ResourceManager* resources) {
|
||||
auto slot = resources->allocVariant();
|
||||
if (!slot)
|
||||
return nullptr;
|
||||
if (tail_) {
|
||||
tail_->setNextNotNull(slot);
|
||||
tail_ = slot;
|
||||
@ -37,6 +38,7 @@ inline void CollectionData::addSlot(VariantSlot* slot) {
|
||||
head_ = slot;
|
||||
tail_ = slot;
|
||||
}
|
||||
return slot;
|
||||
}
|
||||
|
||||
inline void CollectionData::clear(ResourceManager* resources) {
|
||||
|
@ -12,12 +12,11 @@ ARDUINOJSON_BEGIN_PRIVATE_NAMESPACE
|
||||
inline VariantData* ObjectData::addMember(StringNode* key,
|
||||
ResourceManager* resources) {
|
||||
ARDUINOJSON_ASSERT(key != nullptr);
|
||||
auto slot = resources->allocVariant();
|
||||
auto slot = addSlot(resources);
|
||||
if (!slot)
|
||||
return nullptr;
|
||||
|
||||
slot->setKey(key);
|
||||
addSlot(slot);
|
||||
return slot->data();
|
||||
}
|
||||
|
||||
@ -25,7 +24,7 @@ template <typename TAdaptedString>
|
||||
inline VariantData* ObjectData::addMember(TAdaptedString key,
|
||||
ResourceManager* resources) {
|
||||
ARDUINOJSON_ASSERT(!key.isNull());
|
||||
auto slot = resources->allocVariant();
|
||||
auto slot = addSlot(resources);
|
||||
if (!slot)
|
||||
return nullptr;
|
||||
if (key.isLinked())
|
||||
@ -36,7 +35,6 @@ inline VariantData* ObjectData::addMember(TAdaptedString key,
|
||||
return nullptr;
|
||||
slot->setKey(storedKey);
|
||||
}
|
||||
addSlot(slot);
|
||||
return slot->data();
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user