# HG changeset patch # User Ryan C. Gordon # Date 1171537582 0 # Node ID 16f7767f9580e3c44af2ace759abe5d744a1ec23 # Parent 89b0f3d12fe29e6aea0a5f90c144e842431044d4 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. diff -r 89b0f3d12fe2 -r 16f7767f9580 src/stdlib/SDL_string.c --- 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 ) {