From 8f5cca8e3d9c2fdf9cece17103eaed2d38457fa8 Mon Sep 17 00:00:00 2001 From: PatR Date: Sun, 24 Nov 2019 17:56:01 -0800 Subject: [PATCH] 3.7 build cleanup Unix Makefile.utl wasn't aware of the dependency of makedefs.o on src/mdlib.c so didn't rebuild makedefs when it should have. Eliminate several warnings: mdlib.c - #if inside the arguments to macro Sprintf(); nhlua.c - nhl_error() ends with a call to lua_error() which doesn't return, but neither of them were declared that way; nhlsel.c - because of the previous, the 'else error' case of l_selection_ellipse() led to complaints about uninitialized variables; sp_lev.c - missing 'const'. I did minimal testing which went ok, but revisiting a couple of levels gave me un-freed memory allocated by restore.c line 1337. (I haven't looked at that at all.) --- include/extern.h | 4 +- src/mdlib.c | 18 +++--- src/nhlsel.c | 141 +++++++++++++++++++----------------------- src/nhlua.c | 7 ++- src/sp_lev.c | 6 +- sys/unix/Makefile.utl | 6 +- 6 files changed, 84 insertions(+), 98 deletions(-) diff --git a/include/extern.h b/include/extern.h index 08ca0b29a..a191b9acf 100644 --- a/include/extern.h +++ b/include/extern.h @@ -1,4 +1,4 @@ -/* NetHack 3.6 extern.h $NHDT-Date: 1573940539 2019/11/16 21:42:19 $ $NHDT-Branch: NetHack-3.6 $:$NHDT-Revision: 1.741 $ */ +/* NetHack 3.6 extern.h $NHDT-Date: 1574646942 2019/11/25 01:55:42 $ $NHDT-Branch: NetHack-3.7 $:$NHDT-Revision: 1.759 $ */ /* Copyright (c) Steve Creps, 1988. */ /* NetHack may be freely redistributed. See license for details. */ @@ -1674,7 +1674,7 @@ E int FDECL(l_selection_register, (lua_State *)); E lua_State * NDECL(nhl_init); E boolean FDECL(nhl_loadlua, (lua_State *, const char *)); E boolean FDECL(load_lua, (const char *)); -E void FDECL(nhl_error, (lua_State *, const char *)); +E void FDECL(nhl_error, (lua_State *, const char *)) NORETURN; E void FDECL(lcheck_param_table, (lua_State *)); E schar FDECL(get_table_mapchr, (lua_State *, const char *)); E schar FDECL(get_table_mapchr_opt, (lua_State *, const char *, SCHAR_P)); diff --git a/src/mdlib.c b/src/mdlib.c index 6d3dcdd5d..ea134e67f 100644 --- a/src/mdlib.c +++ b/src/mdlib.c @@ -1,4 +1,4 @@ -/* NetHack 3.7 mdlib.c $NHDT-Date: 1562180226 2019/07/03 18:57:06 $ $NHDT-Branch: NetHack-3.6 $:$NHDT-Revision: 1.149 $ */ +/* NetHack 3.7 mdlib.c $NHDT-Date: 1574646946 2019/11/25 01:55:46 $ $NHDT-Branch: NetHack-3.7 $:$NHDT-Revision: 1.0 $ */ /* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */ /*-Copyright (c) Kenneth Lorber, Kensington, Maryland, 2015. */ /* Copyright (c) M. Stephenson, 1990, 1991. */ @@ -560,25 +560,21 @@ build_options() opttext[idxopttext] = strdup(optbuf); if (idxopttext < (MAXOPT - 1)) idxopttext++; - Sprintf(optbuf, - "%sNetHack version %d.%d.%d%s\n", - opt_indent, - VERSION_MAJOR, VERSION_MINOR, PATCHLEVEL, #if (NH_DEVEL_STATUS != NH_STATUS_RELEASED) #if (NH_DEVEL_STATUS == NH_STATUS_BETA) - " [beta]" +#define STATUS_ARG " [beta]" #else - " [work-in-progress]" +#define STATUS_ARG " [work-in-progress]" #endif #else - "" +#define STATUS_ARG "" #endif /* NH_DEVEL_STATUS == NH_STATUS_RELEASED */ - ); + Sprintf(optbuf, "%sNetHack version %d.%d.%d%s\n", + opt_indent, VERSION_MAJOR, VERSION_MINOR, PATCHLEVEL, STATUS_ARG); opttext[idxopttext] = strdup(optbuf); if (idxopttext < (MAXOPT - 1)) idxopttext++; - Sprintf(optbuf, - "Options compiled into this edition:"); + Sprintf(optbuf, "Options compiled into this edition:"); opttext[idxopttext] = strdup(optbuf); if (idxopttext < (MAXOPT - 1)) idxopttext++; diff --git a/src/nhlsel.c b/src/nhlsel.c index 9fe66047c..50e328e8a 100644 --- a/src/nhlsel.c +++ b/src/nhlsel.c @@ -1,4 +1,4 @@ -/* NetHack 3.6 nhlua.c $NHDT-Date: 1524287226 2018/04/21 05:07:06 $ $NHDT-Branch: NetHack-3.6.0 $:$NHDT-Revision: 1.98 $ */ +/* NetHack 3.6 nhlua.c $NHDT-Date: 1574646948 2019/11/25 01:55:48 $ $NHDT-Branch: NetHack-3.7 $:$NHDT-Revision: 1.4 $ */ /* Copyright (c) 2018 by Pasi Kallinen */ /* NetHack may be freely redistributed. See license for details. */ @@ -41,7 +41,6 @@ static int FDECL(l_selection_iterate, (lua_State *)); static int FDECL(l_selection_add, (lua_State *)); static int FDECL(l_selection_sub, (lua_State *)); static int FDECL(l_selection_ipairs, (lua_State *)); -/* this prototype was missing but function body was below */ static struct selectionvar *FDECL(l_selection_to, (lua_State *, int)); #endif @@ -69,16 +68,19 @@ lua_State *L; return 0; } +#if 0 static struct selectionvar * l_selection_to(L, index) lua_State *L; int index; { struct selectionvar *sel = (struct selectionvar *)lua_touserdata(L, index); + if (!sel) nhl_error(L, "Selection error"); return sel; } +#endif static struct selectionvar * l_selection_push(L) @@ -137,11 +139,10 @@ l_selection_setpoint(L) lua_State *L; { struct selectionvar *sel = (struct selectionvar *) 0; - /* REVIEW: initializer added */ schar x = -1, y = -1; int val = 1; int argc = lua_gettop(L); - long coord; + long coord = 0L; if (argc == 0) { (void) l_selection_new(L); @@ -162,6 +163,7 @@ lua_State *L; if (!sel || !sel->map) { nhl_error(L, "Selection setpoint error"); + /*NOTREACHED*/ return 0; } @@ -169,7 +171,8 @@ lua_State *L; coord = SP_COORD_PACK_RANDOM(0); else coord = SP_COORD_PACK(x,y); - get_location_coord(&x, &y, ANY_LOC, g.coder ? g.coder->croom : NULL, coord); + get_location_coord(&x, &y, ANY_LOC, + g.coder ? g.coder->croom : NULL, coord); selection_setpoint(x, y, sel, val); lua_settop(L, 1); return 1; @@ -451,7 +454,6 @@ lua_State *L; { int argc = lua_gettop(L); struct selectionvar *sel = (struct selectionvar *) 0; - /* REVIEW: initializer added */ schar x1, y1, x2, y2; int roughness = 7; @@ -473,10 +475,12 @@ lua_State *L; sel = l_selection_check(L, 1); } - get_location_coord(&x1, &y1, ANY_LOC, g.coder ? g.coder->croom : NULL, SP_COORD_PACK(x1,y1)); - get_location_coord(&x2, &y2, ANY_LOC, g.coder ? g.coder->croom : NULL, SP_COORD_PACK(x2,y2)); + get_location_coord(&x1, &y1, ANY_LOC, + g.coder ? g.coder->croom : NULL, SP_COORD_PACK(x1, y1)); + get_location_coord(&x2, &y2, ANY_LOC, + g.coder ? g.coder->croom : NULL, SP_COORD_PACK(x2, y2)); - selection_do_randline(x1,y1, x2,y2, roughness, 12, sel); + selection_do_randline(x1, y1, x2, y2, roughness, 12, sel); lua_settop(L, 1); return 1; } @@ -533,7 +537,6 @@ lua_State *L; { int argc = lua_gettop(L); struct selectionvar *sel = (struct selectionvar *) 0; - /* REVIEW: initializer added */ schar x, y; if (argc == 3) { @@ -548,11 +551,13 @@ lua_State *L; sel = l_selection_check(L, 1); } else { nhl_error(L, "wrong parameters"); + /*NOTREACHED*/ } - get_location_coord(&x, &y, ANY_LOC, g.coder ? g.coder->croom : NULL, SP_COORD_PACK(x,y)); + get_location_coord(&x, &y, ANY_LOC, + g.coder ? g.coder->croom : NULL, SP_COORD_PACK(x, y)); - if (isok(x,y)) { + if (isok(x, y)) { set_floodfillchk_match_under(levl[x][y].typ); selection_floodfill(sel, x, y, FALSE); } @@ -571,9 +576,8 @@ lua_State *L; { int argc = lua_gettop(L); struct selectionvar *sel = (struct selectionvar *) 0; - /* REVIEW: initializer added */ - schar x, y; - int r, filled = 0; + schar x = 0, y = 0; + int r = 0, filled = 0; if (argc == 3) { x = (schar) luaL_checkinteger(L, 1); @@ -599,22 +603,13 @@ lua_State *L; filled = (int) luaL_optinteger(L, 5, 0); /* TODO: boolean */ } else { nhl_error(L, "wrong parameters"); - /* - * FIXME: OSX compiler is issuing a complaint - * about r being passed to selection_do_ellipse() - * below without ever having been initialized - * to something when this else clause is encountered. - * I could have added an initializer to r at the - * top, but I didn't know what it should be initialized - * to in order for selection_do_ellipse() to not - * misbehave. The parameters passed in previous versions - * were related to xaxis and yaxis. - */ + /*NOTREACHED*/ } - get_location_coord(&x, &y, ANY_LOC, g.coder ? g.coder->croom : NULL, SP_COORD_PACK(x,y)); + get_location_coord(&x, &y, ANY_LOC, + g.coder ? g.coder->croom : NULL, SP_COORD_PACK(x, y)); - selection_do_ellipse(sel, x,y, r,r, !filled); + selection_do_ellipse(sel, x, y, r, r, !filled); lua_settop(L, 1); return 1; @@ -630,9 +625,8 @@ lua_State *L; { int argc = lua_gettop(L); struct selectionvar *sel = (struct selectionvar *) 0; - /* REVIEW: initializer added */ - schar x, y; - int r1, r2, filled = 0; + schar x = 0, y = 0; + int r1 = 0, r2 = 0, filled = 0; if (argc == 4) { x = (schar) luaL_checkinteger(L, 1); @@ -661,22 +655,13 @@ lua_State *L; filled = (int) luaL_optinteger(L, 6, 0); /* TODO: boolean */ } else { nhl_error(L, "wrong parameters"); - /* - * FIXME: OSX compiler is issuing a complaint - * about r1 and r2 being passed to selection_do_ellipse() - * below without ever having been initialized - * to something when this else clause is encountered. - * I could have added an initializer to r1,r2 at the - * top, but I didn't know what they should be initialized - * to in order for selection_do_ellipse() to not - * misbehave. The parameters passed in previous versions - * were related to xaxis and yaxis. - */ + /*NOTREACHED*/ } - get_location_coord(&x, &y, ANY_LOC, g.coder ? g.coder->croom : NULL, SP_COORD_PACK(x,y)); + get_location_coord(&x, &y, ANY_LOC, + g.coder ? g.coder->croom : NULL, SP_COORD_PACK(x, y)); - selection_do_ellipse(sel, x,y, r1,r2, !filled); + selection_do_ellipse(sel, x, y, r1, r2, !filled); lua_settop(L, 1); return 1; @@ -684,43 +669,43 @@ lua_State *L; static const struct luaL_Reg l_selection_methods[] = { - { "new", l_selection_new }, - { "clone", l_selection_clone }, - { "get", l_selection_getpoint }, - { "set", l_selection_setpoint }, - { "negate", l_selection_not }, - { "percentage", l_selection_filter_percent }, - { "rndcoord", l_selection_rndcoord }, - { "line", l_selection_line }, - { "randline", l_selection_randline }, - { "rect", l_selection_rect }, - { "fillrect", l_selection_fillrect }, - { "area", l_selection_fillrect }, - { "grow", l_selection_grow }, - { "filter_mapchar", l_selection_filter_mapchar }, - { "floodfill", l_selection_flood }, - { "circle", l_selection_circle }, - { "ellipse", l_selection_ellipse }, - /* TODO: - { "gradient", l_selection_gradient }, - { "iterate", l_selection_iterate }, - */ - { NULL, NULL } + { "new", l_selection_new }, + { "clone", l_selection_clone }, + { "get", l_selection_getpoint }, + { "set", l_selection_setpoint }, + { "negate", l_selection_not }, + { "percentage", l_selection_filter_percent }, + { "rndcoord", l_selection_rndcoord }, + { "line", l_selection_line }, + { "randline", l_selection_randline }, + { "rect", l_selection_rect }, + { "fillrect", l_selection_fillrect }, + { "area", l_selection_fillrect }, + { "grow", l_selection_grow }, + { "filter_mapchar", l_selection_filter_mapchar }, + { "floodfill", l_selection_flood }, + { "circle", l_selection_circle }, + { "ellipse", l_selection_ellipse }, + /* TODO: + { "gradient", l_selection_gradient }, + { "iterate", l_selection_iterate }, + */ + { NULL, NULL } }; static const luaL_Reg l_selection_meta[] = { - { "__gc", l_selection_gc }, - { "__unm", l_selection_not }, - { "__band", l_selection_and }, - { "__bor", l_selection_or }, - { "__bxor", l_selection_xor }, - { "__bnot", l_selection_not }, - /* TODO: http://lua-users.org/wiki/MetatableEvents - { "__add", l_selection_add }, - { "__sub", l_selection_sub }, - { "__ipairs", l_selection_ipairs }, - */ - { NULL, NULL } + { "__gc", l_selection_gc }, + { "__unm", l_selection_not }, + { "__band", l_selection_and }, + { "__bor", l_selection_or }, + { "__bxor", l_selection_xor }, + { "__bnot", l_selection_not }, + /* TODO: http://lua-users.org/wiki/MetatableEvents + { "__add", l_selection_add }, + { "__sub", l_selection_sub }, + { "__ipairs", l_selection_ipairs }, + */ + { NULL, NULL } }; int diff --git a/src/nhlua.c b/src/nhlua.c index 494b1d265..73431fc7f 100644 --- a/src/nhlua.c +++ b/src/nhlua.c @@ -1,4 +1,4 @@ -/* NetHack 3.6 nhlua.c $NHDT-Date: 1524287226 2018/04/21 05:07:06 $ $NHDT-Branch: NetHack-3.6.0 $:$NHDT-Revision: 1.98 $ */ +/* NetHack 3.6 nhlua.c $NHDT-Date: 1574646949 2019/11/25 01:55:49 $ $NHDT-Branch: NetHack-3.7 $:$NHDT-Revision: 1.8 $ */ /* Copyright (c) 2018 by Pasi Kallinen */ /* NetHack may be freely redistributed. See license for details. */ @@ -37,13 +37,16 @@ nhl_error(L, msg) lua_State *L; const char *msg; { + extern int FDECL(lua_error, (lua_State *)) NORETURN; lua_Debug ar; char buf[BUFSZ]; + lua_getstack(L, 1, &ar); lua_getinfo(L, "lS", &ar); Sprintf(buf, "%s (line %i%s)", msg, ar.currentline, ar.source); lua_pushstring(L, buf); - lua_error(L); + (void) lua_error(L); + /*NOTREACHED*/ } /* Check that parameters are nothing but single table, diff --git a/src/sp_lev.c b/src/sp_lev.c index cb35286ed..c759dd318 100644 --- a/src/sp_lev.c +++ b/src/sp_lev.c @@ -1,4 +1,4 @@ -/* NetHack 3.6 sp_lev.c $NHDT-Date: 1567805254 2019/09/06 21:27:34 $ $NHDT-Branch: NetHack-3.6 $:$NHDT-Revision: 1.117 $ */ +/* NetHack 3.6 sp_lev.c $NHDT-Date: 1574646949 2019/11/25 01:55:49 $ $NHDT-Branch: NetHack-3.7 $:$NHDT-Revision: 1.141 $ */ /* Copyright (c) 1989 by Jean-Christophe Collet */ /* NetHack may be freely redistributed. See license for details. */ @@ -3336,8 +3336,10 @@ const char *name; int defval; { char *trapstr = get_table_str_opt(L, name, emptystr); + if (trapstr && *trapstr) { int i; + for (i = 0; trap_types[i].name; i++) if (!strcmpi(trapstr, trap_types[i].name)) { Free(trapstr); @@ -3350,7 +3352,7 @@ int defval; int get_traptype_byname(trapname) -char *trapname; +const char *trapname; { int i; diff --git a/sys/unix/Makefile.utl b/sys/unix/Makefile.utl index 64dccf570..30676b7e7 100644 --- a/sys/unix/Makefile.utl +++ b/sys/unix/Makefile.utl @@ -1,5 +1,5 @@ # Makefile for NetHack's utility programs. -# NetHack 3.6 Makefile.utl $NHDT-Date: 1539968067 2018/10/19 16:54:27 $ $NHDT-Branch: keni-makedefsm $:$NHDT-Revision: 1.38 $ +# NetHack 3.6 Makefile.utl $NHDT-Date: 1574646950 2019/11/25 01:55:50 $ $NHDT-Branch: NetHack-3.7 $:$NHDT-Revision: 1.44 $ # Copyright (c) 2018 by Robert Patrick Rankin # NetHack may be freely redistributed. See license for details. @@ -185,7 +185,7 @@ CONFIG_H = ../src/config.h-t HACK_H = ../src/hack.h-t # utility .c files -MAKESRC = makedefs.c +MAKESRC = makedefs.c ../src/mdlib.c RECOVSRC = recover.c DLBSRC = dlb_main.c UTILSRCS = $(MAKESRC) panic.c $(DGNCOMPSRC) $(RECOVSRC) $(DLBSRC) @@ -231,7 +231,7 @@ YACCDIST = makedefs: $(MAKEOBJS) mdgrep.h $(CC) $(LFLAGS) -o makedefs $(MAKEOBJS) -makedefs.o: makedefs.c $(CONFIG_H) ../include/permonst.h \ +makedefs.o: makedefs.c ../src/mdlib.c $(CONFIG_H) ../include/permonst.h \ ../include/objclass.h ../include/monsym.h \ ../include/artilist.h ../include/dungeon.h ../include/obj.h \ ../include/monst.h ../include/you.h ../include/flag.h \ -- 2.50.1