diff --git a/CHANGELOG.md b/CHANGELOG.md index fa4cfe6f0..9362a2459 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,11 @@ ArduinoJson: change log ======================= +HEAD +---- + +* Make `JSON_STRING_SIZE(N)` return `N+1` to fix third-party code (issue #2054) + v7.0.3 (2024-02-05) ------ diff --git a/extras/tests/Deprecated/macros.cpp b/extras/tests/Deprecated/macros.cpp index 9db8f15ad..36610c7dd 100644 --- a/extras/tests/Deprecated/macros.cpp +++ b/extras/tests/Deprecated/macros.cpp @@ -14,5 +14,5 @@ TEST_CASE("JSON_OBJECT_SIZE") { } TEST_CASE("JSON_STRING_SIZE") { - REQUIRE(JSON_STRING_SIZE(10) == ArduinoJson::detail::sizeofString(10)); + REQUIRE(JSON_STRING_SIZE(10) == 11); // issue #2054 } diff --git a/src/ArduinoJson/compatibility.hpp b/src/ArduinoJson/compatibility.hpp index 26be5e72c..6b99c4248 100644 --- a/src/ArduinoJson/compatibility.hpp +++ b/src/ArduinoJson/compatibility.hpp @@ -39,7 +39,7 @@ #define JSON_OBJECT_SIZE(N) _Pragma ("GCC warning \"JSON_OBJECT_SIZE is deprecated, you don't need to compute the size anymore\"") (ArduinoJson::detail::sizeofObject(N)) // DEPRECATED: you don't need to compute the size anymore -#define JSON_STRING_SIZE(N) _Pragma ("GCC warning \"JSON_STRING_SIZE is deprecated, you don't need to compute the size anymore\"") (ArduinoJson::detail::sizeofString(N)) +#define JSON_STRING_SIZE(N) _Pragma ("GCC warning \"JSON_STRING_SIZE is deprecated, you don't need to compute the size anymore\"") (N+1) #else @@ -50,7 +50,7 @@ #define JSON_OBJECT_SIZE(N) (ArduinoJson::detail::sizeofObject(N)) // DEPRECATED: you don't need to compute the size anymore -#define JSON_STRING_SIZE(N) (ArduinoJson::detail::sizeofString(N)) +#define JSON_STRING_SIZE(N) (N+1) #endif