diff options
| author | Denis Vlasenko <vda.linux@googlemail.com> | 2008-06-02 23:21:40 +0000 | 
|---|---|---|
| committer | Denis Vlasenko <vda.linux@googlemail.com> | 2008-06-02 23:21:40 +0000 | 
| commit | b1bebd295585a016ee63a1e763005aee1c40bce9 (patch) | |
| tree | aa88e00458e0f3ba2f9681b0f8dc843a2d39d6aa /libc/stdlib | |
| parent | d666e2a91191f6c18b11fea585d09e0ebc6f2e2f (diff) | |
fix bug 1577: '`' is not an acceptable digit for strto[u]l().
Code size is not changed on i386.
Diffstat (limited to 'libc/stdlib')
| -rw-r--r-- | libc/stdlib/stdlib.c | 26 | 
1 files changed, 13 insertions, 13 deletions
| diff --git a/libc/stdlib/stdlib.c b/libc/stdlib/stdlib.c index 87eaee66c..498522a50 100644 --- a/libc/stdlib/stdlib.c +++ b/libc/stdlib/stdlib.c @@ -509,7 +509,7 @@ libc_hidden_proto(__ctype_b)  unsigned long attribute_hidden __XL_NPP(_stdlib_strto_l)(register const Wchar * __restrict str,  										Wchar ** __restrict endptr, int base, -										int sflag   __LOCALE_PARAM ) +										int sflag __LOCALE_PARAM)  {      unsigned long number, cutoff;  #if _STRTO_ENDPTR @@ -530,7 +530,7 @@ unsigned long attribute_hidden __XL_NPP(_stdlib_strto_l)(register const Wchar *      /* Handle optional sign. */      negative = 0; -    switch(*str) { +    switch (*str) {  		case '-': negative = 1;	/* Fall through to increment str. */  		case '+': ++str;      } @@ -557,11 +557,11 @@ unsigned long attribute_hidden __XL_NPP(_stdlib_strto_l)(register const Wchar *  		cutoff_digit = ULONG_MAX % base;  		cutoff = ULONG_MAX / base;  		do { -			digit = (((Wuchar)(*str - '0')) <= 9) -				? (*str - '0') -				: ((*str >= 'A') -				   ? (((0x20|(*str)) - 'a' + 10)) /* WARNING: assumes ascii. */ -					  : 40); +			digit = ((Wuchar)(*str - '0') <= 9) +				? /* 0..9 */ (*str - '0') +				: /* else */ (((Wuchar)(0x20 | *str) >= 'a') /* WARNING: assumes ascii. */ +				   ? /* >= A/a */ ((Wuchar)(0x20 | *str) - ('a' - 10)) +				   : /* else   */ 40 /* bad value */);  			if (digit >= base) {  				break; @@ -683,7 +683,7 @@ unsigned long long attribute_hidden __XL_NPP(_stdlib_strto_ll)(register const Wc      /* Handle optional sign. */      negative = 0; -    switch(*str) { +    switch (*str) {  		case '-': negative = 1;	/* Fall through to increment str. */  		case '+': ++str;      } @@ -708,11 +708,11 @@ unsigned long long attribute_hidden __XL_NPP(_stdlib_strto_ll)(register const Wc      if (((unsigned)(base - 2)) < 35) { /* Legal base. */  		do { -			digit = (((Wuchar)(*str - '0')) <= 9) -				? (*str - '0') -				: ((*str >= 'A') -				   ? (((0x20|(*str)) - 'a' + 10)) /* WARNING: assumes ascii. */ -					  : 40); +			digit = ((Wuchar)(*str - '0') <= 9) +				? /* 0..9 */ (*str - '0') +				: /* else */ (((Wuchar)(0x20 | *str) >= 'a') /* WARNING: assumes ascii. */ +				   ? /* >= A/a */ ((Wuchar)(0x20 | *str) - ('a' - 10)) +				   : /* else   */ 40 /* bad value */);  			if (digit >= base) {  				break; | 
