svn commit: trunk/uClibc/libc/stdlib
vda at uclibc.org
vda at uclibc.org
Mon Jun 2 23:21:41 UTC 2008
Author: vda
Date: 2008-06-02 16:21:40 -0700 (Mon, 02 Jun 2008)
New Revision: 22191
Log:
fix bug 1577: '`' is not an acceptable digit for strto[u]l().
Code size is not changed on i386.
Modified:
trunk/uClibc/libc/stdlib/stdlib.c
Changeset:
Modified: trunk/uClibc/libc/stdlib/stdlib.c
===================================================================
--- trunk/uClibc/libc/stdlib/stdlib.c 2008-06-02 22:24:34 UTC (rev 22190)
+++ trunk/uClibc/libc/stdlib/stdlib.c 2008-06-02 23:21:40 UTC (rev 22191)
@@ -509,7 +509,7 @@
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 @@
/* Handle optional sign. */
negative = 0;
- switch(*str) {
+ switch (*str) {
case '-': negative = 1; /* Fall through to increment str. */
case '+': ++str;
}
@@ -557,11 +557,11 @@
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 @@
/* Handle optional sign. */
negative = 0;
- switch(*str) {
+ switch (*str) {
case '-': negative = 1; /* Fall through to increment str. */
case '+': ++str;
}
@@ -708,11 +708,11 @@
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;
More information about the uClibc-cvs
mailing list