Fix array bounds violation in the solver. Oops.
authorsimon <simon@cda61777-01e9-0310-a592-d414129be87e>
Sat, 27 Aug 2005 09:53:38 +0000 (09:53 +0000)
committersimon <simon@cda61777-01e9-0310-a592-d414129be87e>
Sat, 27 Aug 2005 09:53:38 +0000 (09:53 +0000)
git-svn-id: svn://svn.tartarus.org/sgt/puzzles@6225 cda61777-01e9-0310-a592-d414129be87e

inertia.c

index a158363..fc213da 100644 (file)
--- a/inertia.c
+++ b/inertia.c
@@ -370,7 +370,9 @@ static int find_gem_candidates(int w, int h, char *grid,
                    d2 = n;
                }
                i2 = (y2*w+x2)*DIRECTIONS+d2;
-               if (!reachable[i2]) {
+               if (x2 >= 0 && x2 < w &&
+                   y2 >= 0 && y2 < h &&
+                   !reachable[i2]) {
                    int ok;
 #ifdef SOLVER_DIAGNOSTICS
                    printf("  trying point %d,%d,%d", x2, y2, d2);