diff -urN avr-libc-0.99.90.20030908.orig/libc/stdlib/strtol.c avr-libc-0.99.90.20030908/libc/stdlib/strtol.c --- avr-libc-0.99.90.20030908.orig/libc/stdlib/strtol.c Fri Jul 5 20:38:44 2002 +++ avr-libc-0.99.90.20030908/libc/stdlib/strtol.c Thu Sep 18 08:06:55 2003 @@ -60,7 +60,7 @@ #define cutoff (cut.quot) #define cutlim ((int) cut.rem) #endif - register int neg = 0, any; + register signed char neg = 0, any; /* * Skip white space and pick up leading +/- sign if any. @@ -115,7 +115,7 @@ if (isdigit(c)) c -= '0'; else if (isalpha(c)) - c -= isupper(c) ? 'A' - 10 : 'a' - 10; + c = (c & ~0x20) - 'A' - 10; else break; if (c >= base) diff -urN avr-libc-0.99.90.20030908.orig/libc/stdlib/strtoul.c avr-libc-0.99.90.20030908/libc/stdlib/strtoul.c --- avr-libc-0.99.90.20030908.orig/libc/stdlib/strtoul.c Fri Jun 13 21:16:32 2003 +++ avr-libc-0.99.90.20030908/libc/stdlib/strtoul.c Thu Sep 18 08:03:06 2003 @@ -53,7 +53,7 @@ register unsigned char c; register unsigned long cutoff; register int cutlim; - register int neg = 0, any; + register signed char neg = 0, any; /* * See strtol for comments as to the logic used. @@ -82,7 +82,7 @@ if (isdigit(c)) c -= '0'; else if (isalpha(c)) - c -= isupper(c) ? 'A' - 10 : 'a' - 10; + c = (c & ~0x20) - 'A' - 10; else break; if (c >= base)