]> granicus.if.org Git - nethack/commitdiff
Fix infinite looping when bound digging on solid map
authorPasi Kallinen <paxed@alt.org>
Wed, 11 Nov 2015 19:47:51 +0000 (21:47 +0200)
committerPasi Kallinen <paxed@alt.org>
Wed, 11 Nov 2015 19:47:51 +0000 (21:47 +0200)
src/mkmaze.c

index ce3066f81bb82bfeacaf0eec21dfeca9c3210138..f602cb45a8829a709f3e7bad9939036a4d9ff922 100644 (file)
@@ -824,7 +824,7 @@ bound_digging()
         return; /* everything diggable here */
 
     found = nonwall = FALSE;
-    for (xmin = 0; !found; xmin++) {
+    for (xmin = 0; !found && xmin <= COLNO; xmin++) {
         lev = &levl[xmin][0];
         for (y = 0; y <= ROWNO - 1; y++, lev++) {
             typ = lev->typ;
@@ -840,7 +840,7 @@ bound_digging()
         xmin = 0;
 
     found = nonwall = FALSE;
-    for (xmax = COLNO - 1; !found; xmax--) {
+    for (xmax = COLNO - 1; !found && xmax >= 0; xmax--) {
         lev = &levl[xmax][0];
         for (y = 0; y <= ROWNO - 1; y++, lev++) {
             typ = lev->typ;
@@ -856,7 +856,7 @@ bound_digging()
         xmax = COLNO - 1;
 
     found = nonwall = FALSE;
-    for (ymin = 0; !found; ymin++) {
+    for (ymin = 0; !found && ymin <= ROWNO; ymin++) {
         lev = &levl[xmin][ymin];
         for (x = xmin; x <= xmax; x++, lev += ROWNO) {
             typ = lev->typ;
@@ -870,7 +870,7 @@ bound_digging()
     ymin -= (nonwall || !level.flags.is_maze_lev) ? 2 : 1;
 
     found = nonwall = FALSE;
-    for (ymax = ROWNO - 1; !found; ymax--) {
+    for (ymax = ROWNO - 1; !found && ymax >= 0; ymax--) {
         lev = &levl[xmin][ymax];
         for (x = xmin; x <= xmax; x++, lev += ROWNO) {
             typ = lev->typ;