aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--tracks.c4
1 files changed, 4 insertions, 0 deletions
diff --git a/tracks.c b/tracks.c
index 674be4a..443a62a 100644
--- a/tracks.c
+++ b/tracks.c
@@ -2429,6 +2429,8 @@ static game_state *execute_move(const game_state *state, const char *move)
f = (c == 'T' || c == 't') ? S_TRACK : S_NOTRACK;
if (d == 'S') {
+ if (!ui_can_flip_square(ret, x, y, f == S_NOTRACK))
+ goto badmove;
if (c == 'T' || c == 'N')
ret->sflags[y*w+x] |= f;
else
@@ -2438,6 +2440,8 @@ static game_state *execute_move(const game_state *state, const char *move)
unsigned df = 1<<i;
if (MOVECHAR(df) == d) {
+ if (!ui_can_flip_edge(ret, x, y, df, f == S_NOTRACK))
+ goto badmove;
if (c == 'T' || c == 'N')
S_E_SET(ret, x, y, df, f);
else