From: nhmall Date: Tue, 10 Mar 2015 01:08:26 +0000 (-0400) Subject: fix a segfault in mapglyph reported by Pasi earlier today X-Git-Tag: NetHack-3.6.0_RC01~622 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=fa04eff2821fe4c9f9c6587bf85160f57c8d7203;p=nethack fix a segfault in mapglyph reported by Pasi earlier today Changes to be committed: modified: src/pager.c Steps to reproduce the reported segfault: Use / command, answer n, press space and enter In do_look() variable glyph is only set to a proper value if using the screen (from_screen) or the mouse (clicklook). On the code path that triggered the segfault, glyph was being passed to mapglyph with a random arbitrary value. If glyph had been initialized at the start of do_look(), it would have prevented the segfault, but would have always displayed a giant ant or something silly instead of the correct thing. Don't use glyph except under from_screen || clicklook. --- diff --git a/src/pager.c b/src/pager.c index 4e8008c1b..721119060 100644 --- a/src/pager.c +++ b/src/pager.c @@ -574,9 +574,14 @@ do_look(mode, click_cc) def_monsyms[i].explain) { need_to_look = TRUE; if (!found) { - Sprintf(out_str, "%s %s", + if (from_screen || clicklook) + Sprintf(out_str, "%s %s", encglyph(glyph), - an(def_monsyms[i].explain)); + an(def_monsyms[i].explain)); + else + Sprintf(out_str, "%c %s", + sym, + an(def_monsyms[i].explain)); firstmatch = def_monsyms[i].explain; found++; } else {