From c267b55dece62dc536c1c2aff74ddfb53e5a91cd Mon Sep 17 00:00:00 2001 From: Benoit Blanchon Date: Thu, 25 May 2023 10:06:01 +0200 Subject: [PATCH] Move raw string copy logic into `VariantData::setRawString()` --- src/ArduinoJson/Variant/VariantData.hpp | 9 +++++++-- src/ArduinoJson/Variant/VariantFunctions.hpp | 6 +----- 2 files changed, 8 insertions(+), 7 deletions(-) diff --git a/src/ArduinoJson/Variant/VariantData.hpp b/src/ArduinoJson/Variant/VariantData.hpp index 6c396fc6..675320b0 100644 --- a/src/ArduinoJson/Variant/VariantData.hpp +++ b/src/ArduinoJson/Variant/VariantData.hpp @@ -299,9 +299,14 @@ class VariantData { content_.asOwnedString = s; } - void setRawString(StringNode* s, MemoryPool* pool) { + template + void setRawString(SerializedValue value, MemoryPool* pool) { release(pool); - setRawString(s); + auto dup = pool->saveString(adaptString(value.data(), value.size())); + if (dup) + setRawString(dup); + else + setNull(); } template diff --git a/src/ArduinoJson/Variant/VariantFunctions.hpp b/src/ArduinoJson/Variant/VariantFunctions.hpp index 14ece189..de70b8c9 100644 --- a/src/ArduinoJson/Variant/VariantFunctions.hpp +++ b/src/ArduinoJson/Variant/VariantFunctions.hpp @@ -103,11 +103,7 @@ inline void variantSetRawString(VariantData* var, SerializedValue value, MemoryPool* pool) { if (!var) return; - auto dup = pool->saveString(adaptString(value.data(), value.size())); - if (dup) - var->setRawString(dup, pool); - else - var->setNull(pool); + var->setRawString(value, pool); } inline size_t variantSize(const VariantData* var) {