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) {