From 7ea70ad1d6175018d0d14f8b64a63a33e3bbf299 Mon Sep 17 00:00:00 2001 From: Misa Date: Thu, 11 Feb 2021 17:10:38 -0800 Subject: [PATCH] Fix is_number() returning true for empty strings Just like is_positive_num(), an empty string is not a number. I've also decided to unroll iteration 0 of the loop here so readability is improved; this happens to also knock out the whole "accepting empty string" thing, too. --- desktop_version/src/UtilityClass.cpp | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/desktop_version/src/UtilityClass.cpp b/desktop_version/src/UtilityClass.cpp index 12d2304d..e0700f7e 100644 --- a/desktop_version/src/UtilityClass.cpp +++ b/desktop_version/src/UtilityClass.cpp @@ -267,9 +267,14 @@ void UtilityClass::updateglow() bool is_number(const char* str) { - for (int i = 0; str[i] != '\0'; i++) + if (!SDL_isdigit(str[0]) && str[0] != '-') { - if (!SDL_isdigit(str[i]) && (i != 0 || str[0] != '-')) + return false; + } + + for (int i = 1; str[i] != '\0'; i++) + { + if (!SDL_isdigit(str[i])) { return false; }