chiark / gitweb /
Fix the issue with adding only one arrow when the other end was already white
authorKevin Lyles <kevinlyles@gmail.com>
Sat, 9 May 2015 23:51:00 +0000 (18:51 -0500)
committerSimon Tatham <anakin@pobox.com>
Mon, 11 May 2015 09:46:12 +0000 (10:46 +0100)
galaxies.c

index 84debc7b82db023099077f0735e2809973e9a0fd..d2d2eda75852dc8a21813ecf4ff56579492521a2 100644 (file)
@@ -350,6 +350,7 @@ static void add_assoc(const game_state *state, space *tile, space *dot) {
 }
 
 static void add_assoc_with_opposite(game_state *state, space *tile, space *dot) {
+    int *colors;
     space *opposite = space_opposite_dot(state, tile, dot);
 
     if (opposite == NULL) {
@@ -359,6 +360,18 @@ static void add_assoc_with_opposite(game_state *state, space *tile, space *dot)
         return;
     }
 
+    colors = snewn(state->w * state->h, int);
+    check_complete(state, NULL, colors);
+    if (colors[(tile->y - 1)/2 * state->w + (tile->x - 1)/2]) {
+        sfree(colors);
+        return;
+    }
+    if (colors[(opposite->y - 1)/2 * state->w + (opposite->x - 1)/2]) {
+        sfree(colors);
+        return;
+    }
+
+    sfree(colors);
     add_assoc(state, tile, dot);
     add_assoc(state, opposite, dot);
 }