]> git.dujemihanovic.xyz Git - u-boot.git/commitdiff
lib: Drop unnecessary check for hex digit
authorSimon Glass <sjg@chromium.org>
Sat, 24 Jul 2021 15:03:32 +0000 (09:03 -0600)
committerTom Rini <trini@konsulko.com>
Mon, 2 Aug 2021 17:32:14 +0000 (13:32 -0400)
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>
lib/strto.c
test/str_ut.c

index 72903a57c077b11856b9ac4944a9d43a73f4aa30..53886722138aa884537f4ee76a70dbec7f25413c 100644 (file)
@@ -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;
index 19f2c127135c7aaa0811f2b483c4cf484de0441b..8133b213bfaa9e5aca7efb7f7f09f308c6b4d1d4 100644 (file)
@@ -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));