kstrto*: accept "-0" for signed conversion
strtol(3) et al accept "-0", so should we. Signed-off-by: Alexey Dobriyan <adobriyan@gmail.com> Cc: David Howells <dhowells@redhat.com> Cc: Jan Kara <jack@suse.cz> Cc: Joel Becker <jlbec@evilplan.org> Cc: Mark Fasheh <mfasheh@suse.com> Cc: Theodore Ts'o <tytso@mit.edu> Cc: Rasmus Villemoes <linux@rasmusvillemoes.dk> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
This commit is contained in:
Родитель
3cdea4d714
Коммит
2d2e4715a6
|
@ -152,7 +152,7 @@ int kstrtoll(const char *s, unsigned int base, long long *res)
|
|||
rv = _kstrtoull(s + 1, base, &tmp);
|
||||
if (rv < 0)
|
||||
return rv;
|
||||
if ((long long)(-tmp) >= 0)
|
||||
if ((long long)-tmp > 0)
|
||||
return -ERANGE;
|
||||
*res = -tmp;
|
||||
} else {
|
||||
|
|
|
@ -260,6 +260,7 @@ static void __init test_kstrtoll_ok(void)
|
|||
{"4294967297", 10, 4294967297LL},
|
||||
{"9223372036854775807", 10, 9223372036854775807LL},
|
||||
|
||||
{"-0", 10, 0LL},
|
||||
{"-1", 10, -1LL},
|
||||
{"-2", 10, -2LL},
|
||||
{"-9223372036854775808", 10, LLONG_MIN},
|
||||
|
@ -277,11 +278,6 @@ static void __init test_kstrtoll_fail(void)
|
|||
{"-9223372036854775809", 10},
|
||||
{"-18446744073709551614", 10},
|
||||
{"-18446744073709551615", 10},
|
||||
/* negative zero isn't an integer in Linux */
|
||||
{"-0", 0},
|
||||
{"-0", 8},
|
||||
{"-0", 10},
|
||||
{"-0", 16},
|
||||
/* sign is first character if any */
|
||||
{"-+1", 0},
|
||||
{"-+1", 8},
|
||||
|
|
Загрузка…
Ссылка в новой задаче