diff options
| author | Simon Tatham <anakin@pobox.com> | 2009-06-17 20:01:45 +0000 |
|---|---|---|
| committer | Simon Tatham <anakin@pobox.com> | 2009-06-17 20:01:45 +0000 |
| commit | 0687980f0c3204d283848ba41761a7724e4a6168 (patch) | |
| tree | fb454b19acbc55db35dd3087648d2dc0de52f0bb /bridges.c | |
| parent | 3cd83d05e899e62232b68ea95cf7f07505ebd79f (diff) | |
| download | puzzles-0687980f0c3204d283848ba41761a7724e4a6168.zip puzzles-0687980f0c3204d283848ba41761a7724e4a6168.tar.gz puzzles-0687980f0c3204d283848ba41761a7724e4a6168.tar.bz2 puzzles-0687980f0c3204d283848ba41761a7724e4a6168.tar.xz | |
Memory management and other fixes from James H.
[originally from svn r8596]
Diffstat (limited to 'bridges.c')
| -rw-r--r-- | bridges.c | 6 |
1 files changed, 6 insertions, 0 deletions
@@ -2244,6 +2244,8 @@ static game_state *execute_move(game_state *state, char *move) if (sscanf(move, "%d,%d,%d,%d,%d%n", &x1, &y1, &x2, &y2, &nl, &n) != 5) goto badmove; + if (!INGRID(ret, x1, y1) || !INGRID(ret, x2, y2)) + goto badmove; is1 = INDEX(ret, gridi, x1, y1); is2 = INDEX(ret, gridi, x2, y2); if (!is1 || !is2) goto badmove; @@ -2253,6 +2255,8 @@ static game_state *execute_move(game_state *state, char *move) if (sscanf(move, "%d,%d,%d,%d%n", &x1, &y1, &x2, &y2, &n) != 4) goto badmove; + if (!INGRID(ret, x1, y1) || !INGRID(ret, x2, y2)) + goto badmove; is1 = INDEX(ret, gridi, x1, y1); is2 = INDEX(ret, gridi, x2, y2); if (!is1 || !is2) goto badmove; @@ -2261,6 +2265,8 @@ static game_state *execute_move(game_state *state, char *move) if (sscanf(move, "%d,%d%n", &x1, &y1, &n) != 2) goto badmove; + if (!INGRID(ret, x1, y1)) + goto badmove; is1 = INDEX(ret, gridi, x1, y1); if (!is1) goto badmove; island_togglemark(is1); |