From fa04eff2821fe4c9f9c6587bf85160f57c8d7203 Mon Sep 17 00:00:00 2001 From: nhmall Date: Mon, 9 Mar 2015 21:08:26 -0400 Subject: [PATCH] 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. --- src/pager.c | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) 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 { -- 2.40.0