diff --git a/CHANGELOG.md b/CHANGELOG.md index 124a099b..fdd134c5 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,11 @@ ArduinoJson: change log ======================= +HEAD +---- + +* Fixed exception when using Flash strings as object keys (issue #784) + v6.2.2-beta ----------- diff --git a/src/ArduinoJson/Strings/FixedSizeFlashString.hpp b/src/ArduinoJson/Strings/FixedSizeFlashString.hpp index 6c636264..893cace8 100644 --- a/src/ArduinoJson/Strings/FixedSizeFlashString.hpp +++ b/src/ArduinoJson/Strings/FixedSizeFlashString.hpp @@ -15,7 +15,7 @@ class FixedSizeFlashString { bool equals(const char* expected) const { const char* actual = reinterpret_cast(_str); if (!actual || !expected) return actual == expected; - return strcmp_P(actual, expected) == 0; + return strncmp_P(expected, actual, _size) == 0; } bool is_null() const { diff --git a/src/ArduinoJson/Strings/ZeroTerminatedFlashString.hpp b/src/ArduinoJson/Strings/ZeroTerminatedFlashString.hpp index d86e14e9..5b101272 100644 --- a/src/ArduinoJson/Strings/ZeroTerminatedFlashString.hpp +++ b/src/ArduinoJson/Strings/ZeroTerminatedFlashString.hpp @@ -14,7 +14,7 @@ class ZeroTerminatedFlashString { bool equals(const char* expected) const { const char* actual = reinterpret_cast(_str); if (!actual || !expected) return actual == expected; - return strcmp_P(actual, expected) == 0; + return strcmp_P(expected, actual) == 0; } bool is_null() const {