From cc7ebfd11ef1870fff05c663c4a7f2e2f357a565 Mon Sep 17 00:00:00 2001 From: Benoit Blanchon Date: Thu, 18 Feb 2021 19:40:11 +0100 Subject: [PATCH] deserializeJson() leaves \uXXXX instead of returning NotSupported --- CHANGELOG.md | 1 + extras/tests/MixedConfiguration/decode_unicode_0.cpp | 3 ++- src/ArduinoJson/Json/JsonDeserializer.hpp | 5 ++--- 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 1c3a7d30..2d66adfa 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,7 @@ HEAD ---- * Removed support for `char` values, see below (issue #1498) +* `deserializeJson()` leaves `\uXXXX` unchanged instead of returning `NotSupported` > ### BREAKING CHANGES > diff --git a/extras/tests/MixedConfiguration/decode_unicode_0.cpp b/extras/tests/MixedConfiguration/decode_unicode_0.cpp index 8b02aec3..b5dc1f17 100644 --- a/extras/tests/MixedConfiguration/decode_unicode_0.cpp +++ b/extras/tests/MixedConfiguration/decode_unicode_0.cpp @@ -7,5 +7,6 @@ TEST_CASE("ARDUINOJSON_DECODE_UNICODE == 0") { DynamicJsonDocument doc(2048); DeserializationError err = deserializeJson(doc, "\"\\uD834\\uDD1E\""); - REQUIRE(err == DeserializationError::NotSupported); + REQUIRE(err == DeserializationError::Ok); + REQUIRE(doc.as() == "\\uD834\\uDD1E"); } diff --git a/src/ArduinoJson/Json/JsonDeserializer.hpp b/src/ArduinoJson/Json/JsonDeserializer.hpp index 22ceef07..c20cf4ca 100644 --- a/src/ArduinoJson/Json/JsonDeserializer.hpp +++ b/src/ArduinoJson/Json/JsonDeserializer.hpp @@ -384,11 +384,10 @@ class JsonDeserializer { return false; if (codepoint.append(codeunit)) Utf8::encodeCodepoint(codepoint.value(), _stringStorage); - continue; #else - _error = DeserializationError::NotSupported; - return false; + _stringStorage.append('\\'); #endif + continue; } // replace char