mirror of
git://git.tartarus.org/simon/puzzles.git
synced 2025-04-21 08:01:30 -07:00
Add missing casts to unsigned char inside ctype functions.
These are necessary because the argument to a ctype function cannot be a negative value unless it's EOF. Thanks to Cygwin gcc for pointing out the mistake, and to Patrick Shaughnessy for this patch.
This commit is contained in:
12
palisade.c
12
palisade.c
@ -697,17 +697,17 @@ static char *validate_desc(const game_params *params, const char *desc)
|
|||||||
int w = params->w, h = params->h, wh = w*h, squares = 0;
|
int w = params->w, h = params->h, wh = w*h, squares = 0;
|
||||||
|
|
||||||
for (/* nop */; *desc; ++desc) {
|
for (/* nop */; *desc; ++desc) {
|
||||||
if (islower(*desc)) {
|
if (islower((unsigned char)*desc)) {
|
||||||
squares += *desc - 'a' + 1;
|
squares += *desc - 'a' + 1;
|
||||||
} else if (isdigit(*desc)) {
|
} else if (isdigit((unsigned char)*desc)) {
|
||||||
if (*desc > '4') {
|
if (*desc > '4') {
|
||||||
static char buf[] = "Invalid (too large) number: '5'";
|
static char buf[] = "Invalid (too large) number: '5'";
|
||||||
assert (isdigit(buf[lenof(buf) - 3]));
|
assert (isdigit((unsigned char)buf[lenof(buf) - 3]));
|
||||||
buf[lenof(buf) - 3] = *desc; /* ... or 6, 7, 8, 9 :-) */
|
buf[lenof(buf) - 3] = *desc; /* ... or 6, 7, 8, 9 :-) */
|
||||||
return buf;
|
return buf;
|
||||||
}
|
}
|
||||||
++squares;
|
++squares;
|
||||||
} else if (isprint(*desc)) {
|
} else if (isprint((unsigned char)*desc)) {
|
||||||
static char buf[] = "Invalid character in data: '?'";
|
static char buf[] = "Invalid character in data: '?'";
|
||||||
buf[lenof(buf) - 3] = *desc;
|
buf[lenof(buf) - 3] = *desc;
|
||||||
return buf;
|
return buf;
|
||||||
@ -732,8 +732,8 @@ static game_state *new_game(midend *me, const game_params *params,
|
|||||||
|
|
||||||
setmem(state->shared->clues, EMPTY, wh);
|
setmem(state->shared->clues, EMPTY, wh);
|
||||||
for (i = 0; *desc; ++desc) {
|
for (i = 0; *desc; ++desc) {
|
||||||
if (isdigit(*desc)) state->shared->clues[i++] = *desc - '0';
|
if (isdigit((unsigned char)*desc)) state->shared->clues[i++] = *desc - '0';
|
||||||
else if (isalpha(*desc)) i += *desc - 'a' + 1;
|
else if (isalpha((unsigned char)*desc)) i += *desc - 'a' + 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
snewa(state->borders, wh);
|
snewa(state->borders, wh);
|
||||||
|
Reference in New Issue
Block a user