Fix incorrect uses of ctype.h (passing it uncast chars, or other

things potentially not in the range 0..255).

[originally from svn r8922]
This commit is contained in:
Simon Tatham
2010-04-17 13:27:15 +00:00
parent 945d8f0a3a
commit 0a9b0a7384
4 changed files with 4 additions and 4 deletions

View File

@ -1100,7 +1100,7 @@ static char *interpret_move(game_state *state, game_ui *ui, game_drawstate *ds,
button = 0;
break;
default:
if (!isdigit(button)) return NULL;
if (button < '0' || button > '9') return NULL;
button -= '0';
if (button > (w == 2 && h == 2? 3: max(w, h))) return NULL;
}

View File

@ -386,7 +386,7 @@ static char n2c(int num) { /* XXX cloned from singles.c */
}
static int c2n(char c) { /* XXX cloned from singles.c */
if (isdigit(c))
if (isdigit((unsigned char)c))
return (int)(c - '0');
else if (c >= 'a' && c <= 'z')
return (int)(c - 'a' + 10);

View File

@ -513,7 +513,7 @@ static void unpick_desc(game_params *params, char *desc,
}
c = *desc;
if (isdigit(c)) {
if (isdigit((unsigned char)c)) {
num = (num*10) + (int)(c-'0');
if (num > state->n) {
msg = "Number too large";

View File

@ -324,7 +324,7 @@ static char n2c(int num) {
}
static int c2n(char c) {
if (isdigit(c))
if (isdigit((unsigned char)c))
return (int)(c - '0');
else if (c >= 'a' && c <= 'z')
return (int)(c - 'a' + 10);