diff --git a/include/decl.h b/include/decl.h index ba1377698..662821287 100644 --- a/include/decl.h +++ b/include/decl.h @@ -1,4 +1,4 @@ -/* NetHack 3.7 decl.h $NHDT-Date: 1645000560 2022/02/16 08:36:00 $ $NHDT-Branch: NetHack-3.7 $:$NHDT-Revision: 1.283 $ */ +/* NetHack 3.7 decl.h $NHDT-Date: 1654070559 2022/06/01 08:02:39 $ $NHDT-Branch: NetHack-3.7 $:$NHDT-Revision: 1.296 $ */ /* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */ /*-Copyright (c) Michael Allison, 2007. */ /* NetHack may be freely redistributed. See license for details. */ @@ -1048,6 +1048,7 @@ struct instance_globals { /* nhlua.c */ genericptr_t luacore; /* lua_State * */ + char lua_warnbuf[BUFSZ]; /* o_init.c */ short disco[NUM_OBJECTS]; diff --git a/src/decl.c b/src/decl.c index 19b87151f..5cf81733a 100644 --- a/src/decl.c +++ b/src/decl.c @@ -1,4 +1,4 @@ -/* NetHack 3.7 decl.c $NHDT-Date: 1645000574 2022/02/16 08:36:14 $ $NHDT-Branch: NetHack-3.7 $:$NHDT-Revision: 1.248 $ */ +/* NetHack 3.7 decl.c $NHDT-Date: 1654070576 2022/06/01 08:02:56 $ $NHDT-Branch: NetHack-3.7 $:$NHDT-Revision: 1.255 $ */ /* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */ /*-Copyright (c) Michael Allison, 2009. */ /* NetHack may be freely redistributed. See license for details. */ @@ -511,6 +511,7 @@ const struct instance_globals g_init = { /* nhlua.c */ UNDEFINED_VALUE, /* luacore */ + DUMMY, /* lua_warnbuf[] */ /* o_init.c */ DUMMY, /* disco */ diff --git a/src/nhlua.c b/src/nhlua.c index 5fc39a7e1..097094696 100644 --- a/src/nhlua.c +++ b/src/nhlua.c @@ -1,4 +1,4 @@ -/* NetHack 3.7 nhlua.c $NHDT-Date: 1652897460 2022/05/18 18:11:00 $ $NHDT-Branch: NetHack-3.7 $:$NHDT-Revision: 1.78 $ */ +/* NetHack 3.7 nhlua.c $NHDT-Date: 1654070580 2022/06/01 08:03:00 $ $NHDT-Branch: NetHack-3.7 $:$NHDT-Revision: 1.83 $ */ /* Copyright (c) 2018 by Pasi Kallinen */ /* NetHack may be freely redistributed. See license for details. */ @@ -2278,21 +2278,17 @@ nhl_warn( const char *msg_fragment, int to_be_continued) /* 0: last fragment; 1: more to come */ { - static char warnbuf[BUFSZ]; - size_t fraglen, buflen = strlen(warnbuf); + size_t fraglen, buflen = strlen(g.lua_warnbuf); - if (msg_fragment && buflen < sizeof warnbuf - 1) { + if (msg_fragment && buflen < sizeof g.lua_warnbuf - 1) { fraglen = strlen(msg_fragment); - if (buflen + fraglen > sizeof warnbuf - 1) - fraglen = sizeof warnbuf - 1 - buflen; - (void) strncat(warnbuf, msg_fragment, fraglen); + if (buflen + fraglen > sizeof g.lua_warnbuf - 1) + fraglen = sizeof g.lua_warnbuf - 1 - buflen; + (void) strncat(g.lua_warnbuf, msg_fragment, fraglen); } if (!to_be_continued) { - /* this is a warning so probably ought to be delivered via - impossible() but until the current garbage collection issue - gets fixed that would be way too verbose */ - pline("[lua] %s", warnbuf); - warnbuf[0] = '\0'; + paniclog("[lua]", g.lua_warnbuf); + g.lua_warnbuf[0] = '\0'; } }