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 `JsonString` operator `==` and `!=` for non-zero-terminated string
* Fix `-Wsign-conversion` on GCC 8 (issue #1715)
v6.19.2 (2022-02-14)
-------

View File

@ -18,6 +18,7 @@ if(CMAKE_CXX_COMPILER_ID MATCHES "(GNU|Clang)")
-Wparentheses
-Wredundant-decls
-Wshadow
-Wsign-conversion
-Wsign-promo
-Wstrict-aliasing
-Wundef

View File

@ -40,7 +40,7 @@ TEST_CASE("JsonArray::add()") {
#ifdef HAS_VARIABLE_LENGTH_ARRAY
SECTION("vla") {
int i = 16;
size_t i = 16;
char vla[i];
strcpy(vla, "world");

View File

@ -135,7 +135,7 @@ TEST_CASE("JsonArray::operator[]") {
#ifdef HAS_VARIABLE_LENGTH_ARRAY
SECTION("set(VLA)") {
int i = 16;
size_t i = 16;
char vla[i];
strcpy(vla, "world");
@ -146,7 +146,7 @@ TEST_CASE("JsonArray::operator[]") {
}
SECTION("operator=(VLA)") {
int i = 16;
size_t i = 16;
char vla[i];
strcpy(vla, "world");

View File

@ -708,7 +708,7 @@ TEST_CASE("Overloads") {
#ifdef HAS_VARIABLE_LENGTH_ARRAY
SECTION("char[n], Filter") {
int i = 4;
size_t i = 4;
char vla[i];
strcpy(vla, "{}");
deserializeJson(doc, vla, Filter(filter));
@ -736,7 +736,7 @@ TEST_CASE("Overloads") {
#ifdef HAS_VARIABLE_LENGTH_ARRAY
SECTION("char[n], Filter, NestingLimit") {
int i = 4;
size_t i = 4;
char vla[i];
strcpy(vla, "{}");
deserializeJson(doc, vla, Filter(filter), NestingLimit(5));
@ -764,7 +764,7 @@ TEST_CASE("Overloads") {
#ifdef HAS_VARIABLE_LENGTH_ARRAY
SECTION("char[n], NestingLimit, Filter") {
int i = 4;
size_t i = 4;
char vla[i];
strcpy(vla, "{}");
deserializeJson(doc, vla, NestingLimit(5), Filter(filter));

View File

@ -121,7 +121,7 @@ TEST_CASE("deserializeJson(std::istream&)") {
#ifdef HAS_VARIABLE_LENGTH_ARRAY
TEST_CASE("deserializeJson(VLA)") {
int i = 9;
size_t i = 9;
char vla[i];
strcpy(vla, "{\"a\":42}");

View File

@ -131,7 +131,7 @@ TEST_CASE("ElementProxy::remove()") {
ep["a"] = 1;
ep["b"] = 2;
int i = 4;
size_t i = 4;
char vla[i];
strcpy(vla, "b");
ep.remove(vla);

View File

@ -171,7 +171,7 @@ TEST_CASE("MemberProxy::remove()") {
mp["a"] = 1;
mp["b"] = 2;
int i = 4;
size_t i = 4;
char vla[i];
strcpy(vla, "b");
mp.remove(vla);

View File

@ -41,7 +41,7 @@ TEST_CASE("JsonDocument::remove()") {
doc["a"] = 1;
doc["b"] = 2;
int i = 4;
size_t i = 4;
char vla[i];
strcpy(vla, "b");
doc.remove(vla);

View File

@ -29,7 +29,7 @@ TEST_CASE("JsonObject::containsKey()") {
#ifdef HAS_VARIABLE_LENGTH_ARRAY
SECTION("key is a VLA") {
int i = 16;
size_t i = 16;
char vla[i];
strcpy(vla, "hello");

View File

@ -16,7 +16,7 @@ TEST_CASE("JsonObject::createNestedArray()") {
#ifdef HAS_VARIABLE_LENGTH_ARRAY
SECTION("key is a VLA") {
int i = 16;
size_t i = 16;
char vla[i];
strcpy(vla, "hello");

View File

@ -15,7 +15,7 @@ TEST_CASE("JsonObject::createNestedObject()") {
#ifdef HAS_VARIABLE_LENGTH_ARRAY
SECTION("key is a VLA") {
int i = 16;
size_t i = 16;
char vla[i];
strcpy(vla, "hello");

View File

@ -60,7 +60,7 @@ TEST_CASE("JsonObject::remove()") {
#ifdef HAS_VARIABLE_LENGTH_ARRAY
SECTION("key is a vla") {
int i = 16;
size_t i = 16;
char vla[i];
strcpy(vla, "b");
obj.remove(vla);

View File

@ -172,7 +172,7 @@ TEST_CASE("JsonObject::operator[]") {
#if defined(HAS_VARIABLE_LENGTH_ARRAY) && \
!defined(SUBSCRIPT_CONFLICTS_WITH_BUILTIN_OPERATOR)
SECTION("obj[VLA] = str") {
int i = 16;
size_t i = 16;
char vla[i];
strcpy(vla, "hello");
@ -182,7 +182,7 @@ TEST_CASE("JsonObject::operator[]") {
}
SECTION("obj[str] = VLA") { // issue #416
int i = 32;
size_t i = 32;
char vla[i];
strcpy(vla, "world");
@ -192,7 +192,7 @@ TEST_CASE("JsonObject::operator[]") {
}
SECTION("obj.set(VLA, str)") {
int i = 16;
size_t i = 16;
char vla[i];
strcpy(vla, "hello");
@ -202,7 +202,7 @@ TEST_CASE("JsonObject::operator[]") {
}
SECTION("obj.set(str, VLA)") {
int i = 32;
size_t i = 32;
char vla[i];
strcpy(vla, "world");
@ -212,7 +212,7 @@ TEST_CASE("JsonObject::operator[]") {
}
SECTION("obj[VLA]") {
int i = 16;
size_t i = 16;
char vla[i];
strcpy(vla, "hello");

View File

@ -71,7 +71,7 @@ TEST_CASE("JsonVariant::set() when there is enough memory") {
#ifdef HAS_VARIABLE_LENGTH_ARRAY
SECTION("VLA") {
int n = 16;
size_t n = 16;
char str[n];
strcpy(str, "hello");

View File

@ -108,7 +108,7 @@ TEST_CASE("JsonVariant::operator[]") {
#if defined(HAS_VARIABLE_LENGTH_ARRAY) && \
!defined(SUBSCRIPT_CONFLICTS_WITH_BUILTIN_OPERATOR)
SECTION("key is a VLA") {
int i = 16;
size_t i = 16;
char vla[i];
strcpy(vla, "hello");
@ -119,7 +119,7 @@ TEST_CASE("JsonVariant::operator[]") {
}
SECTION("key is a VLA, const JsonVariant") {
int i = 16;
size_t i = 16;
char vla[i];
strcpy(vla, "hello");

View File

@ -1068,7 +1068,7 @@ TEST_CASE("Overloads") {
#ifdef HAS_VARIABLE_LENGTH_ARRAY
SECTION("char[n], Filter") {
int i = 4;
size_t i = 4;
char vla[i];
strcpy(vla, "{}");
deserializeMsgPack(doc, vla, Filter(filter));
@ -1096,7 +1096,7 @@ TEST_CASE("Overloads") {
#ifdef HAS_VARIABLE_LENGTH_ARRAY
SECTION("char[n], Filter, NestingLimit") {
int i = 4;
size_t i = 4;
char vla[i];
strcpy(vla, "{}");
deserializeMsgPack(doc, vla, Filter(filter), NestingLimit(5));
@ -1124,7 +1124,7 @@ TEST_CASE("Overloads") {
#ifdef HAS_VARIABLE_LENGTH_ARRAY
SECTION("char[n], NestingLimit, Filter") {
int i = 4;
size_t i = 4;
char vla[i];
strcpy(vla, "{}");
deserializeMsgPack(doc, vla, NestingLimit(5), Filter(filter));

View File

@ -72,7 +72,7 @@ TEST_CASE("deserializeMsgPack(std::istream&)") {
#ifdef HAS_VARIABLE_LENGTH_ARRAY
TEST_CASE("deserializeMsgPack(VLA)") {
int i = 16;
size_t i = 16;
char vla[i];
memcpy(vla, "\xDE\x00\x01\xA5Hello\xA5world", 15);

View File

@ -481,7 +481,7 @@ class MsgPackDeserializer {
T size;
if (!readInteger(size))
return false;
return skipBytes(size + 1);
return skipBytes(size + 1U);
}
MemoryPool *_pool;

View File

@ -106,13 +106,13 @@ inline SizedRamString adaptString(const char* s, size_t n) {
return SizedRamString(s, n);
}
template <int N>
template <size_t N>
struct IsString<char[N]> : true_type {};
template <int N>
template <size_t N>
struct IsString<const char[N]> : true_type {};
template <int N>
template <size_t N>
inline SizedRamString adaptString(char s[N]) {
return SizedRamString(s, strlen(s));
}