From: PatR Date: Tue, 1 Sep 2020 11:11:01 +0000 (-0700) Subject: potential infinite loop on hangup (ring prompt) X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=aaa4c1d37c4de69aa6a887473164dd214b72fdd6;p=nethack potential infinite loop on hangup (ring prompt) Core issue noticed while working on some Qt stuff. If hangup occurred while prompting for "right or left?" ring finger, the hangup yn_function() would return ESC and the accessory-on routine would not see '\0', 'r', or 'l' so reprompt. Endlessly. --- diff --git a/doc/fixes37.0 b/doc/fixes37.0 index b28eb8afc..00442d951 100644 --- a/doc/fixes37.0 +++ b/doc/fixes37.0 @@ -1,4 +1,4 @@ -NHDT-Branch: NetHack-3.7 $:$NHDT-Revision: 1.294 $ $NHDT-Date: 1598859031 2020/08/31 07:30:31 $ +NHDT-Branch: NetHack-3.7 $:$NHDT-Revision: 1.295 $ $NHDT-Date: 1598958650 2020/09/01 11:10:50 $ General Fixes and Modified Features ----------------------------------- @@ -248,6 +248,7 @@ end of game inventory disclosure passed an inappropriate argument to the inventory display routine; not noticeable for tty and curses, noticeable but not harmful for X11, and slightly harmful for Qt turning into slime rendered hero as slime one turn too soon +avoid potential infinite loop if hangup occurs at ring "right or left?" prompt Fixes to 3.7.0-x Problems that Were Exposed Via git Repository diff --git a/src/do_wear.c b/src/do_wear.c index f3a157c81..3d20fe61f 100644 --- a/src/do_wear.c +++ b/src/do_wear.c @@ -1,4 +1,4 @@ -/* NetHack 3.7 do_wear.c $NHDT-Date: 1596498163 2020/08/03 23:42:43 $ $NHDT-Branch: NetHack-3.7 $:$NHDT-Revision: 1.134 $ */ +/* NetHack 3.7 do_wear.c $NHDT-Date: 1598958650 2020/09/01 11:10:50 $ $NHDT-Branch: NetHack-3.7 $:$NHDT-Revision: 1.135 $ */ /* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */ /*-Copyright (c) Robert Patrick Rankin, 2012. */ /* NetHack may be freely redistributed. See license for details. */ @@ -1982,6 +1982,7 @@ struct obj *obj; answer = yn_function(qbuf, "rl", '\0'); switch (answer) { case '\0': + case '\033': return 0; case 'l': case 'L':