]> granicus.if.org Git - nethack/commitdiff
fix github issue #686 - dead code
authorPatR <rankin@nethack.org>
Sat, 26 Feb 2022 06:35:04 +0000 (22:35 -0800)
committerPatR <rankin@nethack.org>
Sat, 26 Feb 2022 06:35:04 +0000 (22:35 -0800)
Reported by argrath:  the code in choose_stairs() intended as last
resort wouldn't do anything because the loop's test condition always
started out false.  Fix suggested by entrez.

Closes #686

src/wizard.c

index 784a20b9055609708ee2f3a7d4a2da408dc7937e..e1d4351041235cc0e89acbea8cdcb50ec625fbe0 100644 (file)
@@ -314,24 +314,25 @@ void
 choose_stairs(xchar *sx, xchar *sy, boolean dir)
 {
     xchar x = 0, y = 0;
-    stairway *stway = g.stairs;
+    stairway *stway;
     boolean stdir = dir && !builds_up(&u.uz);
 
     if ((stway = stairway_find_type_dir(FALSE, stdir)) != 0) {
+        /* stairs in direction 'stdir' */
         x = stway->sx;
         y = stway->sy;
     } else if ((stway = stairway_find_type_dir(TRUE, stdir)) != 0) {
+        /* ladder in direction 'stdir' */
         x = stway->sx;
         y = stway->sy;
     } else {
-        while (stway) {
+        /* branch stairs in any direction */
+        for (stway = g.stairs; stway; stway = stway->next)
             if (stway->tolev.dnum != u.uz.dnum) {
                 x = stway->sx;
                 y = stway->sy;
                 break;
             }
-            stway = stway->next;
-        }
     }
 
     if (isok(x, y)) {