From: Simon Glass <sjg@chromium.org>
Date: Sat, 24 Jul 2021 15:03:32 +0000 (-0600)
Subject: lib: Drop unnecessary check for hex digit
X-Git-Tag: v2025.01-rc5-pxa1908~1765^2~6
X-Git-Url: http://git.dujemihanovic.xyz/img/static/gitweb.css?a=commitdiff_plain;h=96b23440c1b74cd95022e3ebb08a60fedb04f3b9;p=u-boot.git

lib: Drop unnecessary check for hex digit

If we see 0x then we can assume this is the start of a hex value. It
does not seem necessary to check for a hex digit after that since it will
happen when parsing the value anyway.

Drop this check to simplify the code and reduce size. Add a few more test
cases for when a 0x prefix is used.

Signed-off-by: Simon Glass <sjg@chromium.org>
---

diff --git a/lib/strto.c b/lib/strto.c
index 72903a57c0..5388672213 100644
--- a/lib/strto.c
+++ b/lib/strto.c
@@ -18,7 +18,7 @@ static const char *_parse_integer_fixup_radix(const char *s, unsigned int *base)
 {
 	if (*base == 0) {
 		if (s[0] == '0') {
-			if (tolower(s[1]) == 'x' && isxdigit(s[2]))
+			if (tolower(s[1]) == 'x')
 				*base = 16;
 			else
 				*base = 8;
diff --git a/test/str_ut.c b/test/str_ut.c
index 19f2c12713..8133b213bf 100644
--- a/test/str_ut.c
+++ b/test/str_ut.c
@@ -84,6 +84,8 @@ static int str_simple_strtoul(struct unit_test_state *uts)
 		/* Base 10 and base 16 */
 		ut_assertok(run_strtoul(uts, str2, 10, 1099, 4, upper));
 		ut_assertok(run_strtoul(uts, str2, 16, 0x1099ab, 6, upper));
+		ut_assertok(run_strtoul(uts, str3, 16, 0xb, 3, upper));
+		ut_assertok(run_strtoul(uts, str3, 10, 0, 1, upper));
 
 		/* Invalid string */
 		ut_assertok(run_strtoul(uts, str1, 10, 0, 0, upper));