chiark / gitweb /
Pearl: reinstate a conditioned-out assertion.
[sgt-puzzles.git] / pearl.c
diff --git a/pearl.c b/pearl.c
index 43afcd6cfb7aea415ac22e59d2bf074938ec5806..f44365630d25ebbf4e4a80567c5522837ed099f5 100644 (file)
--- a/pearl.c
+++ b/pearl.c
@@ -1509,11 +1509,7 @@ static void dsf_update_completion(game_state *state, int *loopclass,
     assert(INGRID(state, bx, by)); /* should not have a link off grid */
 
     bc = by*w+bx;
-#if 0
     assert(state->lines[bc] & F(dir)); /* should have reciprocal link */
-#endif
-    /* TODO put above assertion back in once we stop generating partially
-     * soluble puzzles. */
     if (!(state->lines[bc] & F(dir))) return;
 
     ae = dsf_canonify(dsf, ac);
@@ -1737,7 +1733,7 @@ static char *game_text_format(const game_state *state)
     for (r = 0; r < h; ++r) {
        for (c = 0; c < w; ++c) {
            int i = r*w + c, cell = r*ch*gw + c*cw;
-           board[cell] = state->shared->clues[i]["+BW"];
+           board[cell] = "+BW"[(unsigned char)state->shared->clues[i]];
            if (c < w - 1 && (state->lines[i] & R || state->lines[i+1] & L))
                memset(board + cell + 1, '-', cw - 1);
            if (r < h - 1 && (state->lines[i] & D || state->lines[i+w] & U))
@@ -2058,6 +2054,11 @@ static char *interpret_move(const game_state *state, game_ui *ui,
        }
     }
 
+    if (button == 27 || button == '\b') {
+        ui->ndragcoords = -1;
+        return "";
+    }
+
     if (release) {
         if (ui->ndragcoords > 0) {
             /* End of a drag: process the cached line data. */