Skip to content

Commit

Permalink
Galaxies: fix assertion failure when adding out-of-bounds association.
Browse files Browse the repository at this point in the history
Adding an association with an out-of-bounds square (i.e. by pressing Return
with a dot selected, and then moving the cursor so the `opposite' arrow was
off the screen) would cause space_opposite_dot() to return NULL, in turn
causing ok_to_add_assoc_with_opposite_internal() to return false, failing
the assertion.

This assertion appears to have been introduced in 6836323.
  • Loading branch information
built1n authored and sgtatham committed Dec 7, 2020
1 parent 78bc9ea commit 84cb4c6
Showing 1 changed file with 8 additions and 5 deletions.
13 changes: 8 additions & 5 deletions galaxies.c
Original file line number Diff line number Diff line change
Expand Up @@ -382,12 +382,15 @@ static bool ok_to_add_assoc_with_opposite(
static void add_assoc_with_opposite(game_state *state, space *tile, space *dot) {
space *opposite = space_opposite_dot(state, tile, dot);

assert(ok_to_add_assoc_with_opposite_internal(state, tile, opposite));
if(opposite)
{
assert(ok_to_add_assoc_with_opposite_internal(state, tile, opposite));

remove_assoc_with_opposite(state, tile);
add_assoc(state, tile, dot);
remove_assoc_with_opposite(state, opposite);
add_assoc(state, opposite, dot);
remove_assoc_with_opposite(state, tile);
add_assoc(state, tile, dot);
remove_assoc_with_opposite(state, opposite);
add_assoc(state, opposite, dot);
}
}

static space *sp2dot(const game_state *state, int x, int y)
Expand Down

0 comments on commit 84cb4c6

Please sign in to comment.