~mdw
/
sgt
/
puzzles
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Fix incorrect uses of ctype.h (passing it uncast chars, or other
[sgt/puzzles]
/
signpost.c
diff --git
a/signpost.c
b/signpost.c
index
05d4eaf
..
efed3f7
100644
(file)
--- a/
signpost.c
+++ b/
signpost.c
@@
-423,6
+423,8
@@
static char *validate_params(game_params *params, int full)
{
if (params->w < 2 || params->h < 2)
return "Width and height must both be at least two";
{
if (params->w < 2 || params->h < 2)
return "Width and height must both be at least two";
+ if (params->w == 2 && params->h == 2) /* leads to generation hang */
+ return "Width and height cannot both be two";
return NULL;
}
return NULL;
}
@@
-511,7
+513,7
@@
static void unpick_desc(game_params *params, char *desc,
}
c = *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";
num = (num*10) + (int)(c-'0');
if (num > state->n) {
msg = "Number too large";
@@
-750,6
+752,7
@@
static int new_game_strip(game_state *state, random_state *rs)
copy->flags[j] |= FLAG_IMMUTABLE;
state->flags[j] |= FLAG_IMMUTABLE;
debug_state("Copy of state: ", copy);
copy->flags[j] |= FLAG_IMMUTABLE;
state->flags[j] |= FLAG_IMMUTABLE;
debug_state("Copy of state: ", copy);
+ strip_nums(copy);
if (solve_state(copy) > 0) goto solved;
assert(check_nums(state, copy, 1));
}
if (solve_state(copy) > 0) goto solved;
assert(check_nums(state, copy, 1));
}