Fix unittests/lib/strntol.c test case failure.
Given behavior of strtol(3), "end" pointer should be calculated
based on "beg" pointer instead of "str" on success.
Otherwise if "str" has leading spaces (which are explicitly ignored
by strntol()), "end" won't point to "the first invalid character"
for not counting those spaces.
Glibc's strtol(3) says as follows.
--
If endptr is not NULL, strtol() stores the address of the first
invalid character in *endptr. If there were no digits at all,
strtol() stores the original value of nptr in *endptr (and returns 0).
In particular, if *nptr is not '\0' but **endptr is '\0' on return,
the entire string is valid.
Signed-off-by: Tomohiro Kusumi <kusumi.tomohiro@gmail.com>
Signed-off-by: Jens Axboe <axboe@kernel.dk>
if (ret == LONG_MIN || ret == LONG_MAX)
return ret;
if (end)
if (ret == LONG_MIN || ret == LONG_MAX)
return ret;
if (end)
- *end = (char *)str + (*end - buf);
+ *end = (char *)beg + (*end - buf);