libbb/procps.c: make fast_strtoul_10() stop on '\n' too
authorDenys Vlasenko <vda.linux@googlemail.com>
Tue, 28 Feb 2012 10:16:21 +0000 (11:16 +0100)
committerDenys Vlasenko <vda.linux@googlemail.com>
Tue, 28 Feb 2012 10:16:21 +0000 (11:16 +0100)
This time for real :)

Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
libbb/procps.c

index c06ff1d704eef7e02aa57da64129ed31555e0111..40587db82b193883ae1f238792c44c9778297b86 100644 (file)
@@ -127,11 +127,11 @@ static unsigned long fast_strtoul_16(char **endptr)
        char *str = *endptr;
        unsigned long n = 0;
 
-       /* need to stop on both ' ' and '\n' */
+       /* Need to stop on both ' ' and '\n' */
        while ((c = *str++) > ' ') {
                c = ((c|0x20) - '0');
                if (c > 9)
-                       // c = c + '0' - 'a' + 10:
+                       /* c = c + '0' - 'a' + 10: */
                        c = c - ('a' - '0' - 10);
                n = n*16 + c;
        }
@@ -144,11 +144,12 @@ static unsigned long fast_strtoul_16(char **endptr)
 /* We cut a lot of corners here for speed */
 static unsigned long fast_strtoul_10(char **endptr)
 {
-       char c;
+       unsigned char c;
        char *str = *endptr;
        unsigned long n = *str - '0';
 
-       while ((c = *++str) != ' ')
+       /* Need to stop on both ' ' and '\n' */
+       while ((c = *++str) > ' ')
                n = n*10 + (c - '0');
 
        *endptr = str + 1; /* We skip trailing space! */