From: PatR Date: Fri, 21 May 2021 15:40:39 +0000 (-0700) Subject: fix github issue #514 - 'O' segfault X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=164417f01f3d825d4723955683b0b44b6964239b;p=nethack fix github issue #514 - 'O' segfault The #version command retrieves the lua version number to include in its output, but it was leaving the 'in_lua' flag set. So if a later 'O' command tried to complain about a bad option value, the error reporting routine crashed. --- diff --git a/doc/fixes37.0 b/doc/fixes37.0 index 85348a78a..b2420cd14 100644 --- a/doc/fixes37.0 +++ b/doc/fixes37.0 @@ -688,6 +688,9 @@ forgetting an item's known/dknown/bknown/&c settings when picked up by unseen avoid clearing dknown flag for globs fix globby_bill_fixup to use shopkeeper instead of Null for glob pricing applying a book to check readability treated novels as if they were spellbooks +#version was leaving the 'in_lua' flag set and if subsequent 'O' issued an + error (example was an attempt to interactively set bouldersym to an + invalid value), the error routine reporting crashed via segfault curses: 'msg_window' option wasn't functional for curses unless the binary also included tty support diff --git a/src/nhlua.c b/src/nhlua.c index d446b3e8c..a762bf8cd 100644 --- a/src/nhlua.c +++ b/src/nhlua.c @@ -1193,7 +1193,7 @@ get_lua_version(void) Strcpy(g.lua_ver, vs); } } - lua_close(L); + nhl_done(L); #ifdef LUA_COPYRIGHT if (sizeof LUA_COPYRIGHT <= sizeof g.lua_copyright) Strcpy(g.lua_copyright, LUA_COPYRIGHT);