Fix -Wsign-conversion on GCC 8 (fixes #1715)

This commit is contained in:
Benoit Blanchon
2022-02-25 09:23:51 +01:00
parent 986f77fa15
commit 89ed54362b
20 changed files with 32 additions and 30 deletions

View File

@ -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)
------- -------

View File

@ -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

View File

@ -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");

View File

@ -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");

View File

@ -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));

View File

@ -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}");

View File

@ -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);

View File

@ -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);

View File

@ -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);

View File

@ -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");

View File

@ -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");

View File

@ -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");

View File

@ -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);

View File

@ -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");

View File

@ -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");

View File

@ -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");

View File

@ -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));

View File

@ -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);

View File

@ -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;

View File

@ -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));
} }