From 3f666bd5f08f10a8007963a2e50642cadaf5e1b0 Mon Sep 17 00:00:00 2001 From: Benoit Blanchon Date: Thu, 19 Jul 2018 17:22:28 +0200 Subject: [PATCH] Fixed exception when using Flash strings as object keys (fixes #784) --- CHANGELOG.md | 5 +++++ src/ArduinoJson/Strings/FixedSizeFlashString.hpp | 2 +- src/ArduinoJson/Strings/ZeroTerminatedFlashString.hpp | 2 +- 3 files changed, 7 insertions(+), 2 deletions(-) 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 {