Skip to content

Commit

Permalink
kstrto*: accept "-0" for signed conversion
Browse files Browse the repository at this point in the history
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>
  • Loading branch information
Alexey Dobriyan authored and Linus Torvalds committed Sep 10, 2015
1 parent 3cdea4d commit 2d2e471
Show file tree
Hide file tree
Showing 2 changed files with 2 additions and 6 deletions.
2 changes: 1 addition & 1 deletion lib/kstrtox.c
Original file line number Diff line number Diff line change
Expand Up @@ -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 {
Expand Down
6 changes: 1 addition & 5 deletions lib/test-kstrtox.c
Original file line number Diff line number Diff line change
Expand Up @@ -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},
Expand All @@ -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},
Expand Down

0 comments on commit 2d2e471

Please sign in to comment.