Force chars to unsigned chars in SDL_string.c, so platforms that expect
these to not be negative, when not EOF, work.
Fixes Bugzilla #338.
--- a/src/stdlib/SDL_string.c Wed Feb 14 10:40:24 2007 +0000
+++ b/src/stdlib/SDL_string.c Thu Feb 15 11:06:22 2007 +0000
@@ -45,7 +45,7 @@
}
for ( ; ; ) {
int v;
- if ( SDL_isdigit(*text) ) {
+ if ( SDL_isdigit((unsigned char) *text) ) {
v = *text - '0';
} else if ( radix == 16 && SDL_isupperhex(*text) ) {
v = 10 + (*text - 'A');
@@ -80,7 +80,7 @@
}
for ( ; ; ) {
int v;
- if ( SDL_isdigit(*text) ) {
+ if ( SDL_isdigit((unsigned char) *text) ) {
v = *text - '0';
} else if ( radix == 16 && SDL_isupperhex(*text) ) {
v = 10 + (*text - 'A');
@@ -111,7 +111,7 @@
}
for ( ; ; ) {
int v;
- if ( SDL_isdigit(*text) ) {
+ if ( SDL_isdigit((unsigned char) *text) ) {
v = *text - '0';
} else if ( radix == 16 && SDL_isupperhex(*text) ) {
v = 10 + (*text - 'A');
@@ -148,7 +148,7 @@
}
for ( ; ; ) {
int v;
- if ( SDL_isdigit(*text) ) {
+ if ( SDL_isdigit((unsigned char) *text) ) {
v = *text - '0';
} else if ( radix == 16 && SDL_isupperhex(*text) ) {
v = 10 + (*text - 'A');
@@ -183,7 +183,7 @@
}
for ( ; ; ) {
int v;
- if ( SDL_isdigit(*text) ) {
+ if ( SDL_isdigit((unsigned char) *text) ) {
v = *text - '0';
} else if ( radix == 16 && SDL_isupperhex(*text) ) {
v = 10 + (*text - 'A');
@@ -221,7 +221,7 @@
if ( *text == '.' ) {
int mult = 10;
++text;
- while ( SDL_isdigit(*text) ) {
+ while ( SDL_isdigit((unsigned char) *text) ) {
lvalue = *text - '0';
value += (double)lvalue / mult;
mult *= 10;
@@ -383,7 +383,7 @@
{
char *bufp = string;
while ( *bufp ) {
- *bufp = SDL_toupper(*bufp);
+ *bufp = SDL_toupper((unsigned char) *bufp);
++bufp;
}
return string;
@@ -395,7 +395,7 @@
{
char *bufp = string;
while ( *bufp ) {
- *bufp = SDL_tolower(*bufp);
+ *bufp = SDL_tolower((unsigned char) *bufp);
++bufp;
}
return string;
@@ -699,8 +699,8 @@
char a = 0;
char b = 0;
while ( *str1 && *str2 ) {
- a = SDL_tolower(*str1);
- b = SDL_tolower(*str2);
+ a = SDL_tolower((unsigned char) *str1);
+ b = SDL_tolower((unsigned char) *str2);
if ( a != b )
break;
++str1;
@@ -716,8 +716,8 @@
char a = 0;
char b = 0;
while ( *str1 && *str2 && maxlen ) {
- a = SDL_tolower(*str1);
- b = SDL_tolower(*str2);
+ a = SDL_tolower((unsigned char) *str1);
+ b = SDL_tolower((unsigned char) *str2);
if ( a != b )
break;
++str1;
@@ -737,7 +737,7 @@
va_start(ap, fmt);
while ( *fmt ) {
if ( *fmt == ' ' ) {
- while ( SDL_isspace(*text) ) {
+ while ( SDL_isspace((unsigned char) *text) ) {
++text;
}
++fmt;
@@ -788,7 +788,7 @@
continue;
}
- while ( SDL_isspace(*text) ) {
+ while ( SDL_isspace((unsigned char) *text) ) {
++text;
}
@@ -821,7 +821,7 @@
++index;
}
if ( text[index] == '0' ) {
- if ( SDL_tolower(text[index+1]) == 'x' ) {
+ if ( SDL_tolower((unsigned char) text[index+1]) == 'x' ) {
radix = 16;
} else {
radix = 8;
@@ -950,7 +950,7 @@
break;
case 's':
if ( suppress ) {
- while ( !SDL_isspace(*text) ) {
+ while ( !SDL_isspace((unsigned char) *text) ) {
++text;
if ( count ) {
if ( --count == 0 ) {
@@ -960,7 +960,7 @@
}
} else {
char *valuep = va_arg(ap, char*);
- while ( !SDL_isspace(*text) ) {
+ while ( !SDL_isspace((unsigned char) *text) ) {
*valuep++ = *text++;
if ( count ) {
if ( --count == 0 ) {