From e6ddfc7afbba83b3a01c623826f70a060bc668f9 Mon Sep 17 00:00:00 2001 From: Benoit Blanchon Date: Sun, 16 Feb 2020 16:20:24 +0100 Subject: [PATCH] Fixed static JsonString not being saved by reference --- extras/tests/JsonVariant/set.cpp | 2 +- src/ArduinoJson/Strings/String.hpp | 9 +++++---- 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/extras/tests/JsonVariant/set.cpp b/extras/tests/JsonVariant/set.cpp index b6e8df4c..f2cdb51c 100644 --- a/extras/tests/JsonVariant/set.cpp +++ b/extras/tests/JsonVariant/set.cpp @@ -79,7 +79,7 @@ TEST_CASE("JsonVariant and strings") { variant.set(JsonString(str, true)); strcpy(str, "world"); - REQUIRE(variant == "hello"); + REQUIRE(variant == "world"); } SECTION("stores non-static JsonString by copy") { diff --git a/src/ArduinoJson/Strings/String.hpp b/src/ArduinoJson/Strings/String.hpp index eeced00c..95e4f79a 100644 --- a/src/ArduinoJson/Strings/String.hpp +++ b/src/ArduinoJson/Strings/String.hpp @@ -53,10 +53,11 @@ class StringAdapter : public RamStringAdapter { return _isStatic; } - /* const char* save(MemoryPool* pool) const { - if (_isStatic) return c_str(); - return RamStringAdapter::save(pool); - }*/ + const char* save(MemoryPool* pool) const { + if (_isStatic) + return data(); + return RamStringAdapter::save(pool); + } private: bool _isStatic;