diff options
author | Simon Glass <sjg@chromium.org> | 2021-07-24 09:03:32 -0600 |
---|---|---|
committer | Tom Rini <trini@konsulko.com> | 2021-08-02 13:32:14 -0400 |
commit | 96b23440c1b74cd95022e3ebb08a60fedb04f3b9 (patch) | |
tree | 468fe008d651886455b680de0376a01b7fdee160 | |
parent | 18546f2982bc2032276759530328725ec4561454 (diff) | |
download | u-boot-96b23440c1b74cd95022e3ebb08a60fedb04f3b9.zip u-boot-96b23440c1b74cd95022e3ebb08a60fedb04f3b9.tar.gz u-boot-96b23440c1b74cd95022e3ebb08a60fedb04f3b9.tar.bz2 |
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>
-rw-r--r-- | lib/strto.c | 2 | ||||
-rw-r--r-- | test/str_ut.c | 2 |
2 files changed, 3 insertions, 1 deletions
diff --git a/lib/strto.c b/lib/strto.c index 72903a5..5388672 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 19f2c12..8133b21 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)); |