From 781e449e78bf63cd3cbcd2ae93648aab3106dcb4 Mon Sep 17 00:00:00 2001 From: Benoit Blanchon Date: Thu, 20 Jul 2023 10:46:37 +0200 Subject: [PATCH] `CollectionData::releaseSlot()` takes an iterator --- src/ArduinoJson/Collection/CollectionData.hpp | 2 +- src/ArduinoJson/Collection/CollectionImpl.hpp | 14 +++++++------- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/src/ArduinoJson/Collection/CollectionData.hpp b/src/ArduinoJson/Collection/CollectionData.hpp index adadf9bd..777b6760 100644 --- a/src/ArduinoJson/Collection/CollectionData.hpp +++ b/src/ArduinoJson/Collection/CollectionData.hpp @@ -110,10 +110,10 @@ class CollectionData { protected: iterator addSlot(ResourceManager*); + void releaseSlot(iterator, ResourceManager*); private: SlotWithId getPreviousSlot(VariantSlot*, const ResourceManager*) const; - static void releaseSlot(VariantSlot*, ResourceManager*); }; inline const VariantData* collectionToVariant( diff --git a/src/ArduinoJson/Collection/CollectionImpl.hpp b/src/ArduinoJson/Collection/CollectionImpl.hpp index c013240d..916865d9 100644 --- a/src/ArduinoJson/Collection/CollectionImpl.hpp +++ b/src/ArduinoJson/Collection/CollectionImpl.hpp @@ -65,7 +65,7 @@ inline CollectionData::iterator CollectionData::addSlot( inline void CollectionData::clear(ResourceManager* resources) { for (auto it = createIterator(resources); !it.done(); it.next(resources)) - releaseSlot(it.slot_, resources); + releaseSlot(it, resources); head_ = NULL_SLOT; tail_ = NULL_SLOT; } @@ -96,7 +96,7 @@ inline void CollectionData::remove(iterator it, ResourceManager* resources) { head_ = next; if (next == NULL_SLOT) tail_ = prev.id(); - releaseSlot(curr, resources); + releaseSlot(it, resources); } inline size_t CollectionData::memoryUsage( @@ -127,12 +127,12 @@ inline size_t CollectionData::size(const ResourceManager* resources) const { return count; } -inline void CollectionData::releaseSlot(VariantSlot* slot, +inline void CollectionData::releaseSlot(iterator it, ResourceManager* resources) { - ARDUINOJSON_ASSERT(slot != nullptr); - if (slot->ownsKey()) - resources->dereferenceString(slot->key()); - slot->data()->setNull(resources); + ARDUINOJSON_ASSERT(!it.done()); + if (it.ownsKey()) + resources->dereferenceString(it.key()); + it->setNull(resources); } ARDUINOJSON_END_PRIVATE_NAMESPACE