mirror of
				https://github.com/eledio-devices/thirdparty-ArduinoJson.git
				synced 2025-10-31 16:14:11 +01:00 
			
		
		
		
	Fixed uninitialized variant in JsonDocument
This commit is contained in:
		| @@ -14,6 +14,8 @@ HEAD | ||||
| * Added `nesting()` to `JsonArray`, `JsonDocument`, `JsonObject`, and `JsonVariant` | ||||
| * Replaced `JsonDocument::nestingLimit` with an additional parameter | ||||
|   to `deserializeJson()` and `deserializeMsgPack()` | ||||
| * Fixed uninitialized variant in `JsonDocument` | ||||
| * Added `JsonDocument::isNull()` | ||||
|  | ||||
| > ### BREAKING CHANGES | ||||
| >  | ||||
|   | ||||
| @@ -37,6 +37,10 @@ class JsonDocument : public Visitable { | ||||
|     return getVariant().template is<T>(); | ||||
|   } | ||||
|  | ||||
|   bool isNull() const { | ||||
|     return getVariant().isNull(); | ||||
|   } | ||||
|  | ||||
|   size_t memoryUsage() const { | ||||
|     return _pool.size(); | ||||
|   } | ||||
| @@ -65,9 +69,13 @@ class JsonDocument : public Visitable { | ||||
|   } | ||||
|  | ||||
|  protected: | ||||
|   JsonDocument(MemoryPool pool) : _pool(pool) {} | ||||
|   JsonDocument(MemoryPool pool) : _pool(pool) { | ||||
|     _data.setNull(); | ||||
|   } | ||||
|  | ||||
|   JsonDocument(char* buf, size_t capa) : _pool(buf, capa) {} | ||||
|   JsonDocument(char* buf, size_t capa) : _pool(buf, capa) { | ||||
|     _data.setNull(); | ||||
|   } | ||||
|  | ||||
|   void copy(const JsonDocument& src) { | ||||
|     to<VariantRef>().set(src.as<VariantRef>()); | ||||
|   | ||||
| @@ -5,6 +5,7 @@ | ||||
| add_executable(JsonDocumentTests | ||||
| 	DynamicJsonDocument.cpp | ||||
| 	nesting.cpp | ||||
| 	isNull.cpp | ||||
| 	StaticJsonDocument.cpp | ||||
| ) | ||||
|  | ||||
|   | ||||
							
								
								
									
										39
									
								
								test/JsonDocument/isNull.cpp
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										39
									
								
								test/JsonDocument/isNull.cpp
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,39 @@ | ||||
| // ArduinoJson - arduinojson.org | ||||
| // Copyright Benoit Blanchon 2014-2018 | ||||
| // MIT License | ||||
|  | ||||
| #include <ArduinoJson.h> | ||||
| #include <catch.hpp> | ||||
|  | ||||
| TEST_CASE("JsonDocument::isNull()") { | ||||
|   DynamicJsonDocument doc(4096); | ||||
|  | ||||
|   SECTION("returns true if uninitialized") { | ||||
|     REQUIRE(doc.isNull() == true); | ||||
|   } | ||||
|  | ||||
|   SECTION("returns false after to<JsonObject>()") { | ||||
|     doc.to<JsonObject>(); | ||||
|     REQUIRE(doc.isNull() == false); | ||||
|   } | ||||
|  | ||||
|   SECTION("returns false after to<JsonArray>()") { | ||||
|     doc.to<JsonArray>(); | ||||
|     REQUIRE(doc.isNull() == false); | ||||
|   } | ||||
|  | ||||
|   SECTION("returns true after to<JsonVariant>()") { | ||||
|     REQUIRE(doc.isNull() == true); | ||||
|   } | ||||
|  | ||||
|   SECTION("returns false after set()") { | ||||
|     doc.to<JsonVariant>().set(42); | ||||
|     REQUIRE(doc.isNull() == false); | ||||
|   } | ||||
|  | ||||
|   SECTION("returns true after clear()") { | ||||
|     doc.to<JsonObject>(); | ||||
|     doc.clear(); | ||||
|     REQUIRE(doc.isNull() == true); | ||||
|   } | ||||
| } | ||||
		Reference in New Issue
	
	Block a user