From: PatR Date: Sat, 26 Feb 2022 06:35:04 +0000 (-0800) Subject: fix github issue #686 - dead code X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=7f28a79ae66dc07b3eb83aeeb3e3be73e70e7b0c;p=nethack fix github issue #686 - dead code 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 --- diff --git a/src/wizard.c b/src/wizard.c index 784a20b90..e1d435104 100644 --- a/src/wizard.c +++ b/src/wizard.c @@ -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)) {