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.
This commit is contained in:
@@ -574,9 +574,14 @@ do_look(mode, click_cc)
|
|||||||
def_monsyms[i].explain) {
|
def_monsyms[i].explain) {
|
||||||
need_to_look = TRUE;
|
need_to_look = TRUE;
|
||||||
if (!found) {
|
if (!found) {
|
||||||
Sprintf(out_str, "%s %s",
|
if (from_screen || clicklook)
|
||||||
|
Sprintf(out_str, "%s %s",
|
||||||
encglyph(glyph),
|
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;
|
firstmatch = def_monsyms[i].explain;
|
||||||
found++;
|
found++;
|
||||||
} else {
|
} else {
|
||||||
|
|||||||
Reference in New Issue
Block a user