mirror of
				https://github.com/eledio-devices/thirdparty-ArduinoJson.git
				synced 2025-10-31 08:42:39 +01:00 
			
		
		
		
	Fixed dangling reference in MemberProxy and ElementProxy (fixes #1120)
This commit is contained in:
		| @@ -28,4 +28,59 @@ TEST_CASE("nullptr") { | ||||
|   } | ||||
| } | ||||
|  | ||||
| TEST_CASE("Issue #1120") { | ||||
|   StaticJsonDocument<500> doc; | ||||
|   constexpr char str[] = | ||||
|       "{\"contents\":[{\"module\":\"Packet\"},{\"module\":\"Analog\"}]}"; | ||||
|   deserializeJson(doc, str); | ||||
|  | ||||
|   SECTION("MemberProxy<std::string>::isNull()") { | ||||
|     SECTION("returns false") { | ||||
|       auto value = doc[std::string("contents")]; | ||||
|       CHECK(value.isNull() == false); | ||||
|     } | ||||
|  | ||||
|     SECTION("returns true") { | ||||
|       auto value = doc[std::string("zontents")]; | ||||
|       CHECK(value.isNull() == true); | ||||
|     } | ||||
|   } | ||||
|  | ||||
|   SECTION("ElementProxy<MemberProxy<const char*> >::isNull()") { | ||||
|     SECTION("returns false") {  // Issue #1120 | ||||
|       auto value = doc["contents"][1]; | ||||
|       CHECK(value.isNull() == false); | ||||
|     } | ||||
|  | ||||
|     SECTION("returns true") { | ||||
|       auto value = doc["contents"][2]; | ||||
|       CHECK(value.isNull() == true); | ||||
|     } | ||||
|   } | ||||
|  | ||||
|   SECTION("MemberProxy<ElementProxy<MemberProxy>, const char*>::isNull()") { | ||||
|     SECTION("returns false") { | ||||
|       auto value = doc["contents"][1]["module"]; | ||||
|       CHECK(value.isNull() == false); | ||||
|     } | ||||
|  | ||||
|     SECTION("returns true") { | ||||
|       auto value = doc["contents"][1]["zodule"]; | ||||
|       CHECK(value.isNull() == true); | ||||
|     } | ||||
|   } | ||||
|  | ||||
|   SECTION("MemberProxy<ElementProxy<MemberProxy>, std::string>::isNull()") { | ||||
|     SECTION("returns false") { | ||||
|       auto value = doc["contents"][1][std::string("module")]; | ||||
|       CHECK(value.isNull() == false); | ||||
|     } | ||||
|  | ||||
|     SECTION("returns true") { | ||||
|       auto value = doc["contents"][1][std::string("zodule")]; | ||||
|       CHECK(value.isNull() == true); | ||||
|     } | ||||
|   } | ||||
| } | ||||
|  | ||||
| #endif | ||||
|   | ||||
		Reference in New Issue
	
	Block a user