On Sun, Jun 07, 2020 at 01:36:45AM -0400, Sean Anderson wrote: > This reverts commit 0486497e2b5f4d36fa968a1a60fea358cbf70b65. > > The strtoul has well-defined semantics. It is defined by the C standard and > POSIX. To quote the relevant section of the man pages, > > > If base is zero or 16, the string may then include a "0x" prefix, and the > > number will be read in base 16; otherwise, a zero base is taken as 10 > > (decimal) unless the next character is '0', in which case it is taken as > > 8 (octal). > > Keeping these semantics is important for several reasons. First, it is very > surprising for standard library functions to behave differently than usual. > Every other implementation of strtoul has different semantics than the > implementation in U-Boot at the moment. Second, it can result in very > surprising results from small changes. For example, changing the string > "1f" to "20" causes the parsed value to *decrease*. Forcing use of the "0x" > prefix to specify hexidecimal numbers is a feature, not a bug. Lastly, this > is slightly less performant, since the entire number is parsed twice. > > This fixes the str_simple_strtoul test failing with > > test/str_ut.c:29, run_strtoul(): expect_val == val: Expected 0x44b (1099), > got 0x1099ab (1087915) > test/str_ut.c:46, str_simple_strtoul(): 0 == run_strtoul(uts, str2, 0, 1099, > 4): Expected 0x0 (0), got 0x1 (1) > > Signed-off-by: Sean Anderson <[email protected]> > CC: Michal Simek <[email protected]> > CC: Shiril Tichkule <[email protected]> > Reviewed-by: Simon Glass <[email protected]>
Applied to u-boot/master, thanks! -- Tom
signature.asc
Description: PGP signature

