From 164417f01f3d825d4723955683b0b44b6964239b Mon Sep 17 00:00:00 2001 From: PatR Date: Fri, 21 May 2021 08:40:39 -0700 Subject: [PATCH] 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. --- doc/fixes37.0 | 3 +++ src/nhlua.c | 2 +- 2 files changed, 4 insertions(+), 1 deletion(-) 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);