diff options
author | Jeff Johnston <jjohnstn@redhat.com> | 2010-10-27 19:06:10 +0000 |
---|---|---|
committer | Jeff Johnston <jjohnstn@redhat.com> | 2010-10-27 19:06:10 +0000 |
commit | 9ef039777b0f9bca6ab147360d3f7e8c686bbe2b (patch) | |
tree | eb59d67caff48c1f81d787a4e44588dff3a3f55c /newlib | |
parent | 3e38e8abf7f6db339392b39486e6e07f5e86f17a (diff) | |
download | newlib-9ef039777b0f9bca6ab147360d3f7e8c686bbe2b.zip newlib-9ef039777b0f9bca6ab147360d3f7e8c686bbe2b.tar.gz newlib-9ef039777b0f9bca6ab147360d3f7e8c686bbe2b.tar.bz2 |
2010-10-27 Maurice Baijens <maurice.baijens@ellips.nl>
* libc/stdlib/strtol.c: Make sure signed characters are not
sign-extended when converted to int and passed to ctype macros.
* libc/stdlib/strtoul.c: Ditto.
* libc/stdlib/strtoll_r.c: Ditto.
* libc/stdlib/strtoull_r.c: Ditto.
Diffstat (limited to 'newlib')
-rw-r--r-- | newlib/ChangeLog | 8 | ||||
-rw-r--r-- | newlib/libc/stdlib/strtol.c | 4 | ||||
-rw-r--r-- | newlib/libc/stdlib/strtoll_r.c | 4 | ||||
-rw-r--r-- | newlib/libc/stdlib/strtoul.c | 4 | ||||
-rw-r--r-- | newlib/libc/stdlib/strtoull_r.c | 4 |
5 files changed, 16 insertions, 8 deletions
diff --git a/newlib/ChangeLog b/newlib/ChangeLog index 839c415..2c10bac 100644 --- a/newlib/ChangeLog +++ b/newlib/ChangeLog @@ -1,3 +1,11 @@ +2010-10-27 Maurice Baijens <maurice.baijens@ellips.nl> + + * libc/stdlib/strtol.c: Make sure signed characters are not + sign-extended when converted to int and passed to ctype macros. + * libc/stdlib/strtoul.c: Ditto. + * libc/stdlib/strtoll_r.c: Ditto. + * libc/stdlib/strtoull_r.c: Ditto. + 2010-10-18 Marco Atzeri <marco_atzeri@yahoo.it> * libm/Makefile.am: added complex functions documentation diff --git a/newlib/libc/stdlib/strtol.c b/newlib/libc/stdlib/strtol.c index 4c07e61..4fcce95 100644 --- a/newlib/libc/stdlib/strtol.c +++ b/newlib/libc/stdlib/strtol.c @@ -137,7 +137,7 @@ _DEFUN (_strtol_r, (rptr, nptr, endptr, base), char **endptr _AND int base) { - register const char *s = nptr; + register const unsigned char *s = (const unsigned char *)nptr; register unsigned long acc; register int c; register unsigned long cutoff; @@ -208,7 +208,7 @@ _DEFUN (_strtol_r, (rptr, nptr, endptr, base), } else if (neg) acc = -acc; if (endptr != 0) - *endptr = (char *) (any ? s - 1 : nptr); + *endptr = (char *) (any ? (char *)s - 1 : nptr); return (acc); } diff --git a/newlib/libc/stdlib/strtoll_r.c b/newlib/libc/stdlib/strtoll_r.c index b814f68..e88fbba 100644 --- a/newlib/libc/stdlib/strtoll_r.c +++ b/newlib/libc/stdlib/strtoll_r.c @@ -62,7 +62,7 @@ _DEFUN (_strtoll_r, (rptr, nptr, endptr, base), char **endptr _AND int base) { - register const char *s = nptr; + register const unsigned char *s = (const unsigned char *)nptr; register unsigned long long acc; register int c; register unsigned long long cutoff; @@ -133,7 +133,7 @@ _DEFUN (_strtoll_r, (rptr, nptr, endptr, base), } else if (neg) acc = -acc; if (endptr != 0) - *endptr = (char *) (any ? s - 1 : nptr); + *endptr = (char *) (any ? (char *)s - 1 : nptr); return (acc); } diff --git a/newlib/libc/stdlib/strtoul.c b/newlib/libc/stdlib/strtoul.c index a3ac09d..7fa3a82 100644 --- a/newlib/libc/stdlib/strtoul.c +++ b/newlib/libc/stdlib/strtoul.c @@ -138,7 +138,7 @@ _DEFUN (_strtoul_r, (rptr, nptr, endptr, base), char **endptr _AND int base) { - register const char *s = nptr; + register const unsigned char *s = (const unsigned char *)nptr; register unsigned long acc; register int c; register unsigned long cutoff; @@ -188,7 +188,7 @@ _DEFUN (_strtoul_r, (rptr, nptr, endptr, base), } else if (neg) acc = -acc; if (endptr != 0) - *endptr = (char *) (any ? s - 1 : nptr); + *endptr = (char *) (any ? (char *)s - 1 : nptr); return (acc); } diff --git a/newlib/libc/stdlib/strtoull_r.c b/newlib/libc/stdlib/strtoull_r.c index d8a86b3..da7f7f5 100644 --- a/newlib/libc/stdlib/strtoull_r.c +++ b/newlib/libc/stdlib/strtoull_r.c @@ -63,7 +63,7 @@ _DEFUN (_strtoull_r, (rptr, nptr, endptr, base), char **endptr _AND int base) { - register const char *s = nptr; + register const unsigned char *s = (const unsigned char *)nptr; register unsigned long long acc; register int c; register unsigned long long cutoff; @@ -113,7 +113,7 @@ _DEFUN (_strtoull_r, (rptr, nptr, endptr, base), } else if (neg) acc = -acc; if (endptr != 0) - *endptr = (char *) (any ? s - 1 : nptr); + *endptr = (char *) (any ? (char *)s - 1 : nptr); return (acc); } |