Fixed return value of JsonObject::set() (issue #350)

This commit is contained in:
Benoit Blanchon
2016-09-16 10:10:31 +02:00
parent a60b35f41c
commit 2f6f3d0629
3 changed files with 25 additions and 4 deletions

View File

@ -5,6 +5,7 @@ HEAD
----
* Fixed `array[idx].as<JsonVariant>()` and `object[key].as<JsonVariant>()`
* Fixed return value of `JsonObject::set()` (issue #350)
v5.6.6
------

View File

@ -15,14 +15,16 @@ namespace ArduinoJson {
template <>
inline bool JsonObject::setNodeValue(node_type *node, String &value) {
node->content.value = _buffer->strdup(value);
return node->content.value;
const char *dup = _buffer->strdup(value);
node->content.value = dup;
return dup;
}
template <>
inline bool JsonObject::setNodeValue(node_type *node, const String &value) {
node->content.value = _buffer->strdup(value);
return node->content.value;
const char *dup = _buffer->strdup(value);
node->content.value = dup;
return dup;
}
template <>

View File

@ -107,3 +107,21 @@ TEST_(StoreObjectSubscript) {
EXPECT_EQ(42, _object["a"]);
}
TEST_(ShouldReturnTrue_WhenAllocationSucceeds) {
StaticJsonBuffer<JSON_OBJECT_SIZE(1) + 15> jsonBuffer;
JsonObject& obj = jsonBuffer.createObject();
bool result = obj.set(String("hello"), String("world"));
ASSERT_TRUE(result);
}
TEST_(ShouldReturnFalse_WhenAllocationFails) {
StaticJsonBuffer<JSON_OBJECT_SIZE(1) + 10> jsonBuffer;
JsonObject& obj = jsonBuffer.createObject();
bool result = obj.set(String("hello"), String("world"));
ASSERT_FALSE(result);
}