mirror of
				https://github.com/eledio-devices/thirdparty-ArduinoJson.git
				synced 2025-10-31 16:14:11 +01:00 
			
		
		
		
	Fix -Wsign-conversion on GCC 8 (fixes #1715)
				
					
				
			This commit is contained in:
		| @@ -6,6 +6,7 @@ HEAD | |||||||
|  |  | ||||||
| * Fix `call of overloaded 'String(const char*, int)' is ambiguous` | * Fix `call of overloaded 'String(const char*, int)' is ambiguous` | ||||||
| * Fix `JsonString` operator `==` and `!=` for non-zero-terminated string | * Fix `JsonString` operator `==` and `!=` for non-zero-terminated string | ||||||
|  | * Fix `-Wsign-conversion` on GCC 8 (issue #1715) | ||||||
|  |  | ||||||
| v6.19.2 (2022-02-14) | v6.19.2 (2022-02-14) | ||||||
| ------- | ------- | ||||||
|   | |||||||
| @@ -18,6 +18,7 @@ if(CMAKE_CXX_COMPILER_ID MATCHES "(GNU|Clang)") | |||||||
| 		-Wparentheses | 		-Wparentheses | ||||||
| 		-Wredundant-decls | 		-Wredundant-decls | ||||||
| 		-Wshadow | 		-Wshadow | ||||||
|  | 		-Wsign-conversion | ||||||
| 		-Wsign-promo | 		-Wsign-promo | ||||||
| 		-Wstrict-aliasing | 		-Wstrict-aliasing | ||||||
| 		-Wundef | 		-Wundef | ||||||
|   | |||||||
| @@ -40,7 +40,7 @@ TEST_CASE("JsonArray::add()") { | |||||||
|  |  | ||||||
| #ifdef HAS_VARIABLE_LENGTH_ARRAY | #ifdef HAS_VARIABLE_LENGTH_ARRAY | ||||||
|   SECTION("vla") { |   SECTION("vla") { | ||||||
|     int i = 16; |     size_t i = 16; | ||||||
|     char vla[i]; |     char vla[i]; | ||||||
|     strcpy(vla, "world"); |     strcpy(vla, "world"); | ||||||
|  |  | ||||||
|   | |||||||
| @@ -135,7 +135,7 @@ TEST_CASE("JsonArray::operator[]") { | |||||||
|  |  | ||||||
| #ifdef HAS_VARIABLE_LENGTH_ARRAY | #ifdef HAS_VARIABLE_LENGTH_ARRAY | ||||||
|   SECTION("set(VLA)") { |   SECTION("set(VLA)") { | ||||||
|     int i = 16; |     size_t i = 16; | ||||||
|     char vla[i]; |     char vla[i]; | ||||||
|     strcpy(vla, "world"); |     strcpy(vla, "world"); | ||||||
|  |  | ||||||
| @@ -146,7 +146,7 @@ TEST_CASE("JsonArray::operator[]") { | |||||||
|   } |   } | ||||||
|  |  | ||||||
|   SECTION("operator=(VLA)") { |   SECTION("operator=(VLA)") { | ||||||
|     int i = 16; |     size_t i = 16; | ||||||
|     char vla[i]; |     char vla[i]; | ||||||
|     strcpy(vla, "world"); |     strcpy(vla, "world"); | ||||||
|  |  | ||||||
|   | |||||||
| @@ -708,7 +708,7 @@ TEST_CASE("Overloads") { | |||||||
|  |  | ||||||
| #ifdef HAS_VARIABLE_LENGTH_ARRAY | #ifdef HAS_VARIABLE_LENGTH_ARRAY | ||||||
|   SECTION("char[n], Filter") { |   SECTION("char[n], Filter") { | ||||||
|     int i = 4; |     size_t i = 4; | ||||||
|     char vla[i]; |     char vla[i]; | ||||||
|     strcpy(vla, "{}"); |     strcpy(vla, "{}"); | ||||||
|     deserializeJson(doc, vla, Filter(filter)); |     deserializeJson(doc, vla, Filter(filter)); | ||||||
| @@ -736,7 +736,7 @@ TEST_CASE("Overloads") { | |||||||
|  |  | ||||||
| #ifdef HAS_VARIABLE_LENGTH_ARRAY | #ifdef HAS_VARIABLE_LENGTH_ARRAY | ||||||
|   SECTION("char[n], Filter, NestingLimit") { |   SECTION("char[n], Filter, NestingLimit") { | ||||||
|     int i = 4; |     size_t i = 4; | ||||||
|     char vla[i]; |     char vla[i]; | ||||||
|     strcpy(vla, "{}"); |     strcpy(vla, "{}"); | ||||||
|     deserializeJson(doc, vla, Filter(filter), NestingLimit(5)); |     deserializeJson(doc, vla, Filter(filter), NestingLimit(5)); | ||||||
| @@ -764,7 +764,7 @@ TEST_CASE("Overloads") { | |||||||
|  |  | ||||||
| #ifdef HAS_VARIABLE_LENGTH_ARRAY | #ifdef HAS_VARIABLE_LENGTH_ARRAY | ||||||
|   SECTION("char[n], NestingLimit, Filter") { |   SECTION("char[n], NestingLimit, Filter") { | ||||||
|     int i = 4; |     size_t i = 4; | ||||||
|     char vla[i]; |     char vla[i]; | ||||||
|     strcpy(vla, "{}"); |     strcpy(vla, "{}"); | ||||||
|     deserializeJson(doc, vla, NestingLimit(5), Filter(filter)); |     deserializeJson(doc, vla, NestingLimit(5), Filter(filter)); | ||||||
|   | |||||||
| @@ -121,7 +121,7 @@ TEST_CASE("deserializeJson(std::istream&)") { | |||||||
|  |  | ||||||
| #ifdef HAS_VARIABLE_LENGTH_ARRAY | #ifdef HAS_VARIABLE_LENGTH_ARRAY | ||||||
| TEST_CASE("deserializeJson(VLA)") { | TEST_CASE("deserializeJson(VLA)") { | ||||||
|   int i = 9; |   size_t i = 9; | ||||||
|   char vla[i]; |   char vla[i]; | ||||||
|   strcpy(vla, "{\"a\":42}"); |   strcpy(vla, "{\"a\":42}"); | ||||||
|  |  | ||||||
|   | |||||||
| @@ -131,7 +131,7 @@ TEST_CASE("ElementProxy::remove()") { | |||||||
|     ep["a"] = 1; |     ep["a"] = 1; | ||||||
|     ep["b"] = 2; |     ep["b"] = 2; | ||||||
|  |  | ||||||
|     int i = 4; |     size_t i = 4; | ||||||
|     char vla[i]; |     char vla[i]; | ||||||
|     strcpy(vla, "b"); |     strcpy(vla, "b"); | ||||||
|     ep.remove(vla); |     ep.remove(vla); | ||||||
|   | |||||||
| @@ -171,7 +171,7 @@ TEST_CASE("MemberProxy::remove()") { | |||||||
|     mp["a"] = 1; |     mp["a"] = 1; | ||||||
|     mp["b"] = 2; |     mp["b"] = 2; | ||||||
|  |  | ||||||
|     int i = 4; |     size_t i = 4; | ||||||
|     char vla[i]; |     char vla[i]; | ||||||
|     strcpy(vla, "b"); |     strcpy(vla, "b"); | ||||||
|     mp.remove(vla); |     mp.remove(vla); | ||||||
|   | |||||||
| @@ -41,7 +41,7 @@ TEST_CASE("JsonDocument::remove()") { | |||||||
|     doc["a"] = 1; |     doc["a"] = 1; | ||||||
|     doc["b"] = 2; |     doc["b"] = 2; | ||||||
|  |  | ||||||
|     int i = 4; |     size_t i = 4; | ||||||
|     char vla[i]; |     char vla[i]; | ||||||
|     strcpy(vla, "b"); |     strcpy(vla, "b"); | ||||||
|     doc.remove(vla); |     doc.remove(vla); | ||||||
|   | |||||||
| @@ -29,7 +29,7 @@ TEST_CASE("JsonObject::containsKey()") { | |||||||
|  |  | ||||||
| #ifdef HAS_VARIABLE_LENGTH_ARRAY | #ifdef HAS_VARIABLE_LENGTH_ARRAY | ||||||
|   SECTION("key is a VLA") { |   SECTION("key is a VLA") { | ||||||
|     int i = 16; |     size_t i = 16; | ||||||
|     char vla[i]; |     char vla[i]; | ||||||
|     strcpy(vla, "hello"); |     strcpy(vla, "hello"); | ||||||
|  |  | ||||||
|   | |||||||
| @@ -16,7 +16,7 @@ TEST_CASE("JsonObject::createNestedArray()") { | |||||||
|  |  | ||||||
| #ifdef HAS_VARIABLE_LENGTH_ARRAY | #ifdef HAS_VARIABLE_LENGTH_ARRAY | ||||||
|   SECTION("key is a VLA") { |   SECTION("key is a VLA") { | ||||||
|     int i = 16; |     size_t i = 16; | ||||||
|     char vla[i]; |     char vla[i]; | ||||||
|     strcpy(vla, "hello"); |     strcpy(vla, "hello"); | ||||||
|  |  | ||||||
|   | |||||||
| @@ -15,7 +15,7 @@ TEST_CASE("JsonObject::createNestedObject()") { | |||||||
|  |  | ||||||
| #ifdef HAS_VARIABLE_LENGTH_ARRAY | #ifdef HAS_VARIABLE_LENGTH_ARRAY | ||||||
|   SECTION("key is a VLA") { |   SECTION("key is a VLA") { | ||||||
|     int i = 16; |     size_t i = 16; | ||||||
|     char vla[i]; |     char vla[i]; | ||||||
|     strcpy(vla, "hello"); |     strcpy(vla, "hello"); | ||||||
|  |  | ||||||
|   | |||||||
| @@ -60,7 +60,7 @@ TEST_CASE("JsonObject::remove()") { | |||||||
|  |  | ||||||
| #ifdef HAS_VARIABLE_LENGTH_ARRAY | #ifdef HAS_VARIABLE_LENGTH_ARRAY | ||||||
|   SECTION("key is a vla") { |   SECTION("key is a vla") { | ||||||
|     int i = 16; |     size_t i = 16; | ||||||
|     char vla[i]; |     char vla[i]; | ||||||
|     strcpy(vla, "b"); |     strcpy(vla, "b"); | ||||||
|     obj.remove(vla); |     obj.remove(vla); | ||||||
|   | |||||||
| @@ -172,7 +172,7 @@ TEST_CASE("JsonObject::operator[]") { | |||||||
| #if defined(HAS_VARIABLE_LENGTH_ARRAY) && \ | #if defined(HAS_VARIABLE_LENGTH_ARRAY) && \ | ||||||
|     !defined(SUBSCRIPT_CONFLICTS_WITH_BUILTIN_OPERATOR) |     !defined(SUBSCRIPT_CONFLICTS_WITH_BUILTIN_OPERATOR) | ||||||
|   SECTION("obj[VLA] = str") { |   SECTION("obj[VLA] = str") { | ||||||
|     int i = 16; |     size_t i = 16; | ||||||
|     char vla[i]; |     char vla[i]; | ||||||
|     strcpy(vla, "hello"); |     strcpy(vla, "hello"); | ||||||
|  |  | ||||||
| @@ -182,7 +182,7 @@ TEST_CASE("JsonObject::operator[]") { | |||||||
|   } |   } | ||||||
|  |  | ||||||
|   SECTION("obj[str] = VLA") {  // issue #416 |   SECTION("obj[str] = VLA") {  // issue #416 | ||||||
|     int i = 32; |     size_t i = 32; | ||||||
|     char vla[i]; |     char vla[i]; | ||||||
|     strcpy(vla, "world"); |     strcpy(vla, "world"); | ||||||
|  |  | ||||||
| @@ -192,7 +192,7 @@ TEST_CASE("JsonObject::operator[]") { | |||||||
|   } |   } | ||||||
|  |  | ||||||
|   SECTION("obj.set(VLA, str)") { |   SECTION("obj.set(VLA, str)") { | ||||||
|     int i = 16; |     size_t i = 16; | ||||||
|     char vla[i]; |     char vla[i]; | ||||||
|     strcpy(vla, "hello"); |     strcpy(vla, "hello"); | ||||||
|  |  | ||||||
| @@ -202,7 +202,7 @@ TEST_CASE("JsonObject::operator[]") { | |||||||
|   } |   } | ||||||
|  |  | ||||||
|   SECTION("obj.set(str, VLA)") { |   SECTION("obj.set(str, VLA)") { | ||||||
|     int i = 32; |     size_t i = 32; | ||||||
|     char vla[i]; |     char vla[i]; | ||||||
|     strcpy(vla, "world"); |     strcpy(vla, "world"); | ||||||
|  |  | ||||||
| @@ -212,7 +212,7 @@ TEST_CASE("JsonObject::operator[]") { | |||||||
|   } |   } | ||||||
|  |  | ||||||
|   SECTION("obj[VLA]") { |   SECTION("obj[VLA]") { | ||||||
|     int i = 16; |     size_t i = 16; | ||||||
|     char vla[i]; |     char vla[i]; | ||||||
|     strcpy(vla, "hello"); |     strcpy(vla, "hello"); | ||||||
|  |  | ||||||
|   | |||||||
| @@ -71,7 +71,7 @@ TEST_CASE("JsonVariant::set() when there is enough memory") { | |||||||
|  |  | ||||||
| #ifdef HAS_VARIABLE_LENGTH_ARRAY | #ifdef HAS_VARIABLE_LENGTH_ARRAY | ||||||
|   SECTION("VLA") { |   SECTION("VLA") { | ||||||
|     int n = 16; |     size_t n = 16; | ||||||
|     char str[n]; |     char str[n]; | ||||||
|  |  | ||||||
|     strcpy(str, "hello"); |     strcpy(str, "hello"); | ||||||
|   | |||||||
| @@ -108,7 +108,7 @@ TEST_CASE("JsonVariant::operator[]") { | |||||||
| #if defined(HAS_VARIABLE_LENGTH_ARRAY) && \ | #if defined(HAS_VARIABLE_LENGTH_ARRAY) && \ | ||||||
|     !defined(SUBSCRIPT_CONFLICTS_WITH_BUILTIN_OPERATOR) |     !defined(SUBSCRIPT_CONFLICTS_WITH_BUILTIN_OPERATOR) | ||||||
|   SECTION("key is a VLA") { |   SECTION("key is a VLA") { | ||||||
|     int i = 16; |     size_t i = 16; | ||||||
|     char vla[i]; |     char vla[i]; | ||||||
|     strcpy(vla, "hello"); |     strcpy(vla, "hello"); | ||||||
|  |  | ||||||
| @@ -119,7 +119,7 @@ TEST_CASE("JsonVariant::operator[]") { | |||||||
|   } |   } | ||||||
|  |  | ||||||
|   SECTION("key is a VLA, const JsonVariant") { |   SECTION("key is a VLA, const JsonVariant") { | ||||||
|     int i = 16; |     size_t i = 16; | ||||||
|     char vla[i]; |     char vla[i]; | ||||||
|     strcpy(vla, "hello"); |     strcpy(vla, "hello"); | ||||||
|  |  | ||||||
|   | |||||||
| @@ -1068,7 +1068,7 @@ TEST_CASE("Overloads") { | |||||||
|  |  | ||||||
| #ifdef HAS_VARIABLE_LENGTH_ARRAY | #ifdef HAS_VARIABLE_LENGTH_ARRAY | ||||||
|   SECTION("char[n], Filter") { |   SECTION("char[n], Filter") { | ||||||
|     int i = 4; |     size_t i = 4; | ||||||
|     char vla[i]; |     char vla[i]; | ||||||
|     strcpy(vla, "{}"); |     strcpy(vla, "{}"); | ||||||
|     deserializeMsgPack(doc, vla, Filter(filter)); |     deserializeMsgPack(doc, vla, Filter(filter)); | ||||||
| @@ -1096,7 +1096,7 @@ TEST_CASE("Overloads") { | |||||||
|  |  | ||||||
| #ifdef HAS_VARIABLE_LENGTH_ARRAY | #ifdef HAS_VARIABLE_LENGTH_ARRAY | ||||||
|   SECTION("char[n], Filter, NestingLimit") { |   SECTION("char[n], Filter, NestingLimit") { | ||||||
|     int i = 4; |     size_t i = 4; | ||||||
|     char vla[i]; |     char vla[i]; | ||||||
|     strcpy(vla, "{}"); |     strcpy(vla, "{}"); | ||||||
|     deserializeMsgPack(doc, vla, Filter(filter), NestingLimit(5)); |     deserializeMsgPack(doc, vla, Filter(filter), NestingLimit(5)); | ||||||
| @@ -1124,7 +1124,7 @@ TEST_CASE("Overloads") { | |||||||
|  |  | ||||||
| #ifdef HAS_VARIABLE_LENGTH_ARRAY | #ifdef HAS_VARIABLE_LENGTH_ARRAY | ||||||
|   SECTION("char[n], NestingLimit, Filter") { |   SECTION("char[n], NestingLimit, Filter") { | ||||||
|     int i = 4; |     size_t i = 4; | ||||||
|     char vla[i]; |     char vla[i]; | ||||||
|     strcpy(vla, "{}"); |     strcpy(vla, "{}"); | ||||||
|     deserializeMsgPack(doc, vla, NestingLimit(5), Filter(filter)); |     deserializeMsgPack(doc, vla, NestingLimit(5), Filter(filter)); | ||||||
|   | |||||||
| @@ -72,7 +72,7 @@ TEST_CASE("deserializeMsgPack(std::istream&)") { | |||||||
|  |  | ||||||
| #ifdef HAS_VARIABLE_LENGTH_ARRAY | #ifdef HAS_VARIABLE_LENGTH_ARRAY | ||||||
| TEST_CASE("deserializeMsgPack(VLA)") { | TEST_CASE("deserializeMsgPack(VLA)") { | ||||||
|   int i = 16; |   size_t i = 16; | ||||||
|   char vla[i]; |   char vla[i]; | ||||||
|   memcpy(vla, "\xDE\x00\x01\xA5Hello\xA5world", 15); |   memcpy(vla, "\xDE\x00\x01\xA5Hello\xA5world", 15); | ||||||
|  |  | ||||||
|   | |||||||
| @@ -481,7 +481,7 @@ class MsgPackDeserializer { | |||||||
|     T size; |     T size; | ||||||
|     if (!readInteger(size)) |     if (!readInteger(size)) | ||||||
|       return false; |       return false; | ||||||
|     return skipBytes(size + 1); |     return skipBytes(size + 1U); | ||||||
|   } |   } | ||||||
|  |  | ||||||
|   MemoryPool *_pool; |   MemoryPool *_pool; | ||||||
|   | |||||||
| @@ -106,13 +106,13 @@ inline SizedRamString adaptString(const char* s, size_t n) { | |||||||
|   return SizedRamString(s, n); |   return SizedRamString(s, n); | ||||||
| } | } | ||||||
|  |  | ||||||
| template <int N> | template <size_t N> | ||||||
| struct IsString<char[N]> : true_type {}; | struct IsString<char[N]> : true_type {}; | ||||||
|  |  | ||||||
| template <int N> | template <size_t N> | ||||||
| struct IsString<const char[N]> : true_type {}; | struct IsString<const char[N]> : true_type {}; | ||||||
|  |  | ||||||
| template <int N> | template <size_t N> | ||||||
| inline SizedRamString adaptString(char s[N]) { | inline SizedRamString adaptString(char s[N]) { | ||||||
|   return SizedRamString(s, strlen(s)); |   return SizedRamString(s, strlen(s)); | ||||||
| } | } | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user