ref: 47e9419452a9fca895f1c84412ab1040d1aa86a5
parent: 03e455c2c625fdaad509f5cd56382b8b3bb1eb03
author: Simon Tatham <anakin@pobox.com>
date: Wed Dec 8 03:08:00 EST 2004
Game completion detection was occasionally failing to spot a lingering GRID_UNKNOWN, causing it to declare victory too soon. [originally from svn r4954]
--- a/pattern.c
+++ b/pattern.c
@@ -322,16 +322,16 @@
n = 0;
for (i = 0; i < len; i++) {
- if (start[i*step] == GRID_UNKNOWN)
- return -1;
-
if (start[i*step] == GRID_FULL) {
int runlen = 1;
- while (i+runlen < len && start[(i+runlen)*step])
+ while (i+runlen < len && start[(i+runlen)*step] == GRID_FULL)
runlen++;
ret[n++] = runlen;
i += runlen;
}
+
+ if (start[i*step] == GRID_UNKNOWN)
+ return -1;
}
return n;