/*
* Find the starting square.
*/
+ sx = -1; /* placate optimiser */
for (sy = 0; sy < h; sy++) {
for (sx = 0; sx < w; sx++)
if (AT(w, h, grid, sx, sy) == START)
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);