Fixed JsonVariant::is<int>() that returned true for empty strings

This commit is contained in:
Benoit Blanchon
2018-07-05 09:53:11 +02:00
parent 954428e341
commit fa1a40ac6e
3 changed files with 8 additions and 3 deletions

View File

@ -5,6 +5,7 @@ HEAD
---- ----
* Improved float serialization when `-fsingle-precision-constant` is used * Improved float serialization when `-fsingle-precision-constant` is used
* Fixed `JsonVariant::is<int>()` that returned true for empty strings
v5.13.2 v5.13.2
------- -------

View File

@ -10,10 +10,10 @@ namespace ArduinoJson {
namespace Internals { namespace Internals {
inline bool isInteger(const char* s) { inline bool isInteger(const char* s) {
if (!s) return false; if (!s || !*s) return false;
if (issign(*s)) s++; if (issign(*s)) s++;
while (isdigit(*s)) s++; while (isdigit(*s)) s++;
return *s == '\0'; return *s == '\0';
} }
} } // namespace Internals
} } // namespace ArduinoJson

View File

@ -12,6 +12,10 @@ TEST_CASE("isInteger()") {
REQUIRE_FALSE(isInteger(NULL)); REQUIRE_FALSE(isInteger(NULL));
} }
SECTION("Empty String") {
REQUIRE_FALSE(isInteger(""));
}
SECTION("FloatNotInteger") { SECTION("FloatNotInteger") {
REQUIRE_FALSE(isInteger("3.14")); REQUIRE_FALSE(isInteger("3.14"));
REQUIRE_FALSE(isInteger("-3.14")); REQUIRE_FALSE(isInteger("-3.14"));