Make JSON_STRING_SIZE(N) return N+1 to fix third-party code

ThingsBoard uses this macro to compute size of char arrays ಠ_ಠ
https://github.com/thingsboard/thingsboard-client-sdk/blob/v0.12.2/src/Helper.h#L38

Closes #2054
This commit is contained in:
Benoit Blanchon
2024-02-18 19:58:22 +01:00
parent 04ac53d114
commit f17fc055d3
3 changed files with 8 additions and 3 deletions

View File

@ -1,6 +1,11 @@
ArduinoJson: change log 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) v7.0.3 (2024-02-05)
------ ------

View File

@ -14,5 +14,5 @@ TEST_CASE("JSON_OBJECT_SIZE") {
} }
TEST_CASE("JSON_STRING_SIZE") { TEST_CASE("JSON_STRING_SIZE") {
REQUIRE(JSON_STRING_SIZE(10) == ArduinoJson::detail::sizeofString(10)); REQUIRE(JSON_STRING_SIZE(10) == 11); // issue #2054
} }

View File

@ -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)) #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 // 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 #else
@ -50,7 +50,7 @@
#define JSON_OBJECT_SIZE(N) (ArduinoJson::detail::sizeofObject(N)) #define JSON_OBJECT_SIZE(N) (ArduinoJson::detail::sizeofObject(N))
// DEPRECATED: you don't need to compute the size anymore // 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 #endif