From 46bd98fd1041f0b9cd3426b066ae7a983e24a7c4 Mon Sep 17 00:00:00 2001 From: Benoit Blanchon Date: Thu, 16 Mar 2023 17:52:34 +0100 Subject: [PATCH] `JsonObject::createNestedArray()` returns `JsonArray::invalid()` if key is null --- CHANGELOG.md | 2 +- src/ArduinoJson/JsonObjectImpl.hpp | 6 ++++-- test/JsonObject/CMakeLists.txt | 1 + test/JsonObject/createNestedArray.cpp | 23 +++++++++++++++++++++++ 4 files changed, 29 insertions(+), 3 deletions(-) create mode 100644 test/JsonObject/createNestedArray.cpp diff --git a/CHANGELOG.md b/CHANGELOG.md index 1a3deccb..00f2167e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,7 @@ HEAD ---- * `JsonObject::createNestedObject()` returns `JsonObject::invalid()` if key is null (issue #1891) +* `JsonObject::createNestedArray()` returns `JsonArray::invalid()` if key is null v5.13.5 ------- @@ -492,4 +493,3 @@ v4.0 > ### BREAKING CHANGES :warning: > > API changed significantly since v3, see [Migrating code to the new API](https://arduinojson.org/doc/migration/). - diff --git a/src/ArduinoJson/JsonObjectImpl.hpp b/src/ArduinoJson/JsonObjectImpl.hpp index 7d3a4c84..635bf811 100644 --- a/src/ArduinoJson/JsonObjectImpl.hpp +++ b/src/ArduinoJson/JsonObjectImpl.hpp @@ -14,8 +14,10 @@ template inline JsonArray &JsonObject::createNestedArray_impl(TStringRef key) { if (!_buffer) return JsonArray::invalid(); JsonArray &array = _buffer->createArray(); - set(key, array); - return array; + if (set(key, array)) + return array; + else + return JsonArray::invalid(); } template diff --git a/test/JsonObject/CMakeLists.txt b/test/JsonObject/CMakeLists.txt index d1c0547d..c44999d7 100644 --- a/test/JsonObject/CMakeLists.txt +++ b/test/JsonObject/CMakeLists.txt @@ -5,6 +5,7 @@ add_executable(JsonObjectTests basics.cpp containsKey.cpp + createNestedArray.cpp createNestedObject.cpp get.cpp invalid.cpp diff --git a/test/JsonObject/createNestedArray.cpp b/test/JsonObject/createNestedArray.cpp new file mode 100644 index 00000000..b61dbef0 --- /dev/null +++ b/test/JsonObject/createNestedArray.cpp @@ -0,0 +1,23 @@ +// ArduinoJson - arduinojson.org +// Copyright Benoit Blanchon 2014-2023 +// MIT License + +#include + +#include + +TEST_CASE("JsonObject::createNestedArray()") { + DynamicJsonBuffer _jsonBuffer; + JsonObject& _object = _jsonBuffer.createObject(); + + SECTION("success() should return true if key is non-null") { + JsonArray& arr = _object.createNestedArray("key"); + REQUIRE(arr.success() == true); + } + + SECTION("success() should return false if key is null") { + const char* null = 0; + JsonArray& arr = _object.createNestedArray(null); + REQUIRE(arr.success() == false); + } +}