]> granicus.if.org Git - nethack/commitdiff
lev_comp int vs long
authorPatR <rankin@nethack.org>
Wed, 28 Nov 2018 02:21:58 +0000 (18:21 -0800)
committerPatR <rankin@nethack.org>
Wed, 28 Nov 2018 02:21:58 +0000 (18:21 -0800)
Fix lev_comp's variable argument usage by changing it to make
add_opvars() expect an int rather than a long when given the "i"
indicator, and add "l" for really passing a long.  The ints are
conveted to longs when setting up the interpreter.  I think I changed
just about all the integer opvars to int, although there is one use
of "l" in lev_main.c just to make sure it works.  There could be
arguments that really do need to be 'long'; if so, the add_opvars()
calls for them will have to have its indicator string updated and
possibly add or remove some casts.

There's a lot of reformatting included but it's not consistent about
tab replacement.  Some of the changes are due to renaming long-named
'variable_definitions' to 'vardefs' to shorten a bunch of lines.

Updated sys/share/*_yacc.c will be checked in separately.  The ones
currently in the repository won't work with patched lev_main.c due to
that renamed variable.

doc/fixes36.2
include/sp_lev.h
include/tradstdc.h
util/lev_comp.l
util/lev_comp.y
util/lev_main.c

index 9c54cd35712992a6beebfae1b8b49affc9d0f895..b840669b25842a4f9efb24310fdd94372828f5e7 100644 (file)
@@ -222,6 +222,9 @@ attempting to untrap an adjacent trap while on the edge of--not in--a pit
        failed due to not being able to reach the floor
 magic trap's deafening roar effect wasn't waking nearby monsters
 scattering of objects might leave source location with wrong thing displayed
+for configurations with 'long int' larger than 'int', lev_comp wrote some
+       garbage into the *.lev files, but nethack seemed unaffected by that
+       (at least on little-endian hardare) and loaded the levels successfully
 
 
 Fixes to Post-3.6.1 Problems that Were Exposed Via git Repository
index 7d5b7bf0dd29a27a502bb9a9f8a0551f922d280b..804fbc63290e2b8ad618058956040f5f32f4e047 100644 (file)
@@ -1,4 +1,4 @@
-/* NetHack 3.6 sp_lev.h        $NHDT-Date: 1524287214 2018/04/21 05:06:54 $  $NHDT-Branch: NetHack-3.6.0 $:$NHDT-Revision: 1.23 $ */
+/* NetHack 3.6 sp_lev.h        $NHDT-Date: 1543371689 2018/11/28 02:21:29 $  $NHDT-Branch: NetHack-3.6.2-beta01 $:$NHDT-Revision: 1.24 $ */
 /* Copyright (c) 1989 by Jean-Christophe Collet                          */
 /* NetHack may be freely redistributed.  See license for details. */
 
@@ -221,7 +221,7 @@ enum sp_obj_var_flags {
 #define SPOVAR_SEL 0x09   /* selection. char[COLNO][ROWNO] in str */
 #define SPOVAR_ARRAY 0x40 /* used in splev_var & lc_vardefs, not in opvar */
 
-#define SP_COORD_IS_RANDOM 0x01000000
+#define SP_COORD_IS_RANDOM 0x01000000L
 /* Humidity flags for get_location() and friends, used with
  * SP_COORD_PACK_RANDOM() */
 #define DRY         0x01
index 5e5cbd7c28800d520557943d853850c69049d95c..d1b1f250cee15d09e4bc58908cac0bafa470221c 100644 (file)
@@ -1,4 +1,4 @@
-/* NetHack 3.6 tradstdc.h      $NHDT-Date: 1501803107 2017/08/03 23:31:47 $  $NHDT-Branch: NetHack-3.6.0 $:$NHDT-Revision: 1.29 $ */
+/* NetHack 3.6 tradstdc.h      $NHDT-Date: 1543371689 2018/11/28 02:21:29 $  $NHDT-Branch: NetHack-3.6.2-beta01 $:$NHDT-Revision: 1.32 $ */
 /* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */
 /*-Copyright (c) Robert Patrick Rankin, 2006. */
 /* NetHack may be freely redistributed.  See license for details. */
@@ -95,7 +95,7 @@
     {                                    \
         va_list the_args;
 #define VA_INIT(var1, typ1)
-#define VA_NEXT(var1, typ1) var1 = va_arg(the_args, typ1)
+#define VA_NEXT(var1, typ1) (var1 = va_arg(the_args, typ1))
 #define VA_ARGS the_args
 #define VA_START(x) va_start(the_args, x)
 #define VA_END()      \
 #define VA_ARGS the_args
 #define VA_START(x) va_start(the_args)
 #define VA_INIT(var1, typ1) var1 = va_arg(the_args, typ1)
-#define VA_NEXT(var1, typ1) var1 = va_arg(the_args, typ1)
+#define VA_NEXT(var1, typ1) (var1 = va_arg(the_args, typ1))
 #define VA_END()      \
     va_end(the_args); \
     }
index d6ae1472ee43b3fbfbb03c19aa56df401fcdbfb9..8866e3f6fe9adf1e0c5e3861c22a79f23ac69546 100644 (file)
@@ -1,5 +1,5 @@
 %{
-/* NetHack 3.6  lev_comp.l     $NHDT-Date: 1455415007 2016/02/14 01:56:47 $  $NHDT-Branch: NetHack-3.6.0 $:$NHDT-Revision: 1.24 $ */
+/* NetHack 3.6  lev_comp.l     $NHDT-Date: 1543371690 2018/11/28 02:21:30 $  $NHDT-Branch: NetHack-3.6.2-beta01 $:$NHDT-Revision: 1.25 $ */
 /*     Copyright (c) 1989 by Jean-Christophe Collet */
 /* NetHack may be freely redistributed.  See license for details. */
 
@@ -77,7 +77,7 @@ long FDECL(corefunc_str_check, (char *, long));
 extern void VDECL(lc_error, (const char *, ...));
 extern struct lc_vardefs *FDECL(vardef_defined,(struct lc_vardefs *,char *, int));
 
-extern struct lc_vardefs *variable_definitions;
+extern struct lc_vardefs *vardefs;
 
 extern long FDECL(method_defined, (char *, long, long *));
 
@@ -384,7 +384,7 @@ handle_varstring_check()
     struct lc_vardefs *vd;
 
     yylval.map = dupstr(yytext);
-    if ((vd = vardef_defined(variable_definitions, yytext, 1)) != 0) {
+    if ((vd = vardef_defined(vardefs, yytext, 1)) != 0) {
         long l = vd->var_type;
         int a = ((l & SPOVAR_ARRAY) == SPOVAR_ARRAY);
 
index 9122ca5d56c9a6ea8d9bd6463a89557a7b5621e4..494f694d8ff8fa528ac81616258debe7df67c060 100644 (file)
@@ -1,5 +1,5 @@
 %{
-/* NetHack 3.6  lev_comp.y     $NHDT-Date: 1455746893 2016/02/17 22:08:13 $  $NHDT-Branch: NetHack-3.6.0 $:$NHDT-Revision: 1.21 $ */
+/* NetHack 3.6  lev_comp.y     $NHDT-Date: 1543371691 2018/11/28 02:21:31 $  $NHDT-Branch: NetHack-3.6.2-beta01 $:$NHDT-Revision: 1.22 $ */
 /*      Copyright (c) 1989 by Jean-Christophe Collet */
 /* NetHack may be freely redistributed.  See license for details. */
 
@@ -114,7 +114,8 @@ int obj_containment = 0;
 
 int in_container_obj = 0;
 
-/* integer value is possibly an inconstant value (eg. dice notation or a variable) */
+/* integer value is possibly an inconstant value (eg. dice notation
+   or a variable) */
 int is_inconstant_number = 0;
 
 int in_switch_statement = 0;
@@ -127,7 +128,7 @@ int n_switch_case_list = 0;
 int allow_break_statements = 0;
 struct lc_breakdef *break_list = NULL;
 
-extern struct lc_vardefs *variable_definitions;
+extern struct lc_vardefs *vardefs; /* variable definitions */
 
 
 struct lc_vardefs *function_tmp_var_defs = NULL;
@@ -148,39 +149,39 @@ extern char curr_token[512];
 
 %union
 {
-       long    i;
-       char*   map;
-       struct {
-               long room;
-               long wall;
-               long door;
-       } corpos;
+    long    i;
+    char    *map;
     struct {
-       long area;
-       long x1;
-       long y1;
-       long x2;
-       long y2;
+        long room;
+        long wall;
+        long door;
+    } corpos;
+    struct {
+        long area;
+        long x1;
+        long y1;
+        long x2;
+        long y2;
     } lregn;
     struct {
-       long x;
-       long y;
+        long x;
+        long y;
     } crd;
     struct {
-       long ter;
-       long lit;
+        long ter;
+        long lit;
     } terr;
     struct {
-       long height;
-       long width;
+        long height;
+        long width;
     } sze;
     struct {
-       long die;
-       long num;
+        long die;
+        long num;
     } dice;
     struct {
-       long cfunc;
-       char *varstr;
+        long cfunc;
+        char *varstr;
     } meth;
 }
 
@@ -214,7 +215,8 @@ extern char curr_token[512];
 %token <i> MSG_OUTPUT_TYPE
 %token <i> COMPARE_TYPE
 %token  <i> UNKNOWN_TYPE
-%token <i> rect_ID fillrect_ID line_ID randline_ID grow_ID selection_ID flood_ID
+%token <i> rect_ID fillrect_ID line_ID randline_ID grow_ID
+%token <i> selection_ID flood_ID
 %token <i> rndcoord_ID circle_ID ellipse_ID filter_ID complement_ID
 %token <i> gradient_ID GRADIENT_TYPE LIMITED HUMIDITY_TYPE
 %token <i> ',' ':' '(' ')' '[' ']' '{' '}'
@@ -247,12 +249,14 @@ extern char curr_token[512];
 %type  <i> dir_list teleprt_detail
 %type  <i> object_infos object_info monster_infos monster_info
 %type  <i> levstatements stmt_block region_detail_end
-%type  <i> engraving_type flag_list roomregionflag roomregionflags optroomregionflags
+%type  <i> engraving_type flag_list roomregionflag roomregionflags
+%type  <i> optroomregionflags
 %type  <i> humidity_flags
 %type  <i> comparestmt encodecoord encoderegion mapchar
 %type  <i> seen_trap_mask
 %type  <i> encodemonster encodeobj encodeobj_list
-%type  <i> integer_list string_list encodecoord_list encoderegion_list mapchar_list encodemonster_list
+%type  <i> integer_list string_list encodecoord_list encoderegion_list
+%type  <i> mapchar_list encodemonster_list
 %type  <i> opt_percent opt_fillchar
 %type  <i> all_integers
 %type  <i> ter_selection ter_selection_x
@@ -286,21 +290,22 @@ level             : level_def flags levstatements
                  {
                        if (fatal_error > 0) {
                                (void) fprintf(stderr,
-                               "%s: %d errors detected for level \"%s\". No output created!\n",
+              "%s: %d errors detected for level \"%s\". No output created!\n",
                                               fname, fatal_error, $1);
                                fatal_error = 0;
                                got_errors++;
                        } else if (!got_errors) {
                                if (!write_level_file($1, splev)) {
-                                   lc_error("Can't write output file for '%s'!", $1);
+                                    lc_error("Can't write output file for '%s'!",
+                                             $1);
                                    exit(EXIT_FAILURE);
                                }
                        }
                        Free($1);
                        Free(splev);
                        splev = NULL;
-                       vardef_free_all(variable_definitions);
-                       variable_definitions = NULL;
+                       vardef_free_all(vardefs);
+                       vardefs = NULL;
                  }
                ;
 
@@ -314,10 +319,11 @@ level_def : LEVEL_ID ':' STRING
                      start_level_def(&splev, $3);
                      if ($5 == -1) {
                          add_opvars(splev, "iiiiiiiio",
-                                    VA_PASS9(LVLINIT_MAZEGRID,HWALL,0,0,
+                                    VA_PASS9(LVLINIT_MAZEGRID, HWALL, 0,0,
                                              0,0,0,0, SPO_INITLEVEL));
                      } else {
-                         long bg = what_map_char((char) $5);
+                         int bg = (int) what_map_char((char) $5);
+
                          add_opvars(splev, "iiiiiiiio",
                                     VA_PASS9(LVLINIT_SOLIDFILL, bg, 0,0,
                                              0,0,0,0, SPO_INITLEVEL));
@@ -342,21 +348,25 @@ mazefiller        : RANDOM_TYPE
 
 lev_init       : LEV_INIT_ID ':' SOLID_FILL_ID ',' terrain_type
                  {
-                     long filling = $5.ter;
+                     int filling = (int) $5.ter;
+
                      if (filling == INVALID_TYPE || filling >= MAX_TYPE)
                          lc_error("INIT_MAP: Invalid fill char type.");
                      add_opvars(splev, "iiiiiiiio",
-                                LVLINIT_SOLIDFILL,filling,0,(long)$5.lit, 0,0,0,0, SPO_INITLEVEL);
+                                VA_PASS9(LVLINIT_SOLIDFILL, filling,
+                                          0, (int) $5.lit,
+                                          0,0,0,0, SPO_INITLEVEL));
                      max_x_map = COLNO-1;
                      max_y_map = ROWNO;
                  }
                | LEV_INIT_ID ':' MAZE_GRID_ID ',' CHAR
                  {
-                     long filling = what_map_char((char) $5);
+                     int filling = (int) what_map_char((char) $5);
+
                      if (filling == INVALID_TYPE || filling >= MAX_TYPE)
                          lc_error("INIT_MAP: Invalid fill char type.");
-                     add_opvars(splev, "iiiiiiiio",
-                                VA_PASS9(LVLINIT_MAZEGRID,filling,0,0,
+                      add_opvars(splev, "iiiiiiiio",
+                                VA_PASS9(LVLINIT_MAZEGRID, filling, 0,0,
                                          0,0,0,0, SPO_INITLEVEL));
                      max_x_map = COLNO-1;
                      max_y_map = ROWNO;
@@ -369,13 +379,14 @@ lev_init  : LEV_INIT_ID ':' SOLID_FILL_ID ',' terrain_type
                  }
                | LEV_INIT_ID ':' MINES_ID ',' CHAR ',' CHAR ',' BOOLEAN ',' BOOLEAN ',' light_state ',' walled opt_fillchar
                  {
-                     long fg = what_map_char((char) $5);
-                     long bg = what_map_char((char) $7);
-                     long smoothed = $9;
-                     long joined = $11;
-                     long lit = $13;
-                     long walled = $15;
-                     long filling = $16;
+                      int fg = (int) what_map_char((char) $5),
+                          bg = (int) what_map_char((char) $7);
+                      int smoothed = (int) $9,
+                          joined = (int) $11,
+                          lit = (int) $13,
+                          walled = (int) $15,
+                          filling = (int) $16;
+
                      if (fg == INVALID_TYPE || fg >= MAX_TYPE)
                          lc_error("INIT_MAP: Invalid foreground type.");
                      if (bg == INVALID_TYPE || bg >= MAX_TYPE)
@@ -387,8 +398,8 @@ lev_init    : LEV_INIT_ID ':' SOLID_FILL_ID ',' terrain_type
                          lc_error("INIT_MAP: Invalid fill char type.");
 
                      add_opvars(splev, "iiiiiiiio",
-                                VA_PASS9(LVLINIT_MINES,filling,walled,lit,
-                                         joined,smoothed,bg,fg,
+                                VA_PASS9(LVLINIT_MINES, filling, walled, lit,
+                                         joined, smoothed, bg, fg,
                                          SPO_INITLEVEL));
                        max_x_map = COLNO-1;
                        max_y_map = ROWNO;
@@ -437,7 +448,8 @@ flags               : /* nothing */
                  }
                | FLAGS_ID ':' flag_list
                  {
-                     add_opvars(splev, "io", VA_PASS2($3, SPO_LEVEL_FLAGS));
+                     add_opvars(splev, "io",
+                                 VA_PASS2((int) $3, SPO_LEVEL_FLAGS));
                  }
                ;
 
@@ -547,10 +559,14 @@ any_var_or_unk    : VARSTRING
 shuffle_detail : SHUFFLE_ID ':' any_var_array
                  {
                      struct lc_vardefs *vd;
-                     if ((vd = vardef_defined(variable_definitions, $3, 1))) {
+
+                     if ((vd = vardef_defined(vardefs, $3, 1))) {
                          if (!(vd->var_type & SPOVAR_ARRAY))
-                             lc_error("Trying to shuffle non-array variable '%s'", $3);
-                     } else lc_error("Trying to shuffle undefined variable '%s'", $3);
+                             lc_error("Trying to shuffle non-array variable '%s'",
+                                       $3);
+                     } else
+                          lc_error("Trying to shuffle undefined variable '%s'",
+                                   $3);
                      add_opvars(splev, "so", VA_PASS2($3, SPO_SHUFFLE_ARRAY));
                      Free($3);
                  }
@@ -558,104 +574,118 @@ shuffle_detail  : SHUFFLE_ID ':' any_var_array
 
 variable_define        : any_var_or_arr '=' math_expr_var
                  {
-                     variable_definitions = add_vardef_type(variable_definitions, $1, SPOVAR_INT);
+                     vardefs = add_vardef_type(vardefs, $1, SPOVAR_INT);
                      add_opvars(splev, "iso", VA_PASS3(0, $1, SPO_VAR_INIT));
                      Free($1);
                  }
                | any_var_or_arr '=' selection_ID ':' ter_selection
                  {
-                     variable_definitions = add_vardef_type(variable_definitions, $1, SPOVAR_SEL);
+                     vardefs = add_vardef_type(vardefs, $1, SPOVAR_SEL);
                      add_opvars(splev, "iso", VA_PASS3(0, $1, SPO_VAR_INIT));
                      Free($1);
                  }
                | any_var_or_arr '=' string_expr
                  {
-                     variable_definitions = add_vardef_type(variable_definitions, $1, SPOVAR_STRING);
+                     vardefs = add_vardef_type(vardefs, $1, SPOVAR_STRING);
                      add_opvars(splev, "iso", VA_PASS3(0, $1, SPO_VAR_INIT));
                      Free($1);
                  }
                | any_var_or_arr '=' terrainid ':' mapchar_or_var
                  {
-                     variable_definitions = add_vardef_type(variable_definitions, $1, SPOVAR_MAPCHAR);
+                     vardefs = add_vardef_type(vardefs, $1, SPOVAR_MAPCHAR);
                      add_opvars(splev, "iso", VA_PASS3(0, $1, SPO_VAR_INIT));
                      Free($1);
                  }
                | any_var_or_arr '=' monsterid ':' monster_or_var
                  {
-                     variable_definitions = add_vardef_type(variable_definitions, $1, SPOVAR_MONST);
+                     vardefs = add_vardef_type(vardefs, $1, SPOVAR_MONST);
                      add_opvars(splev, "iso", VA_PASS3(0, $1, SPO_VAR_INIT));
                      Free($1);
                  }
                | any_var_or_arr '=' objectid ':' object_or_var
                  {
-                     variable_definitions = add_vardef_type(variable_definitions, $1, SPOVAR_OBJ);
+                     vardefs = add_vardef_type(vardefs, $1, SPOVAR_OBJ);
                      add_opvars(splev, "iso", VA_PASS3(0, $1, SPO_VAR_INIT));
                      Free($1);
                  }
                | any_var_or_arr '=' coord_or_var
                  {
-                     variable_definitions = add_vardef_type(variable_definitions, $1, SPOVAR_COORD);
+                     vardefs = add_vardef_type(vardefs, $1, SPOVAR_COORD);
                      add_opvars(splev, "iso", VA_PASS3(0, $1, SPO_VAR_INIT));
                      Free($1);
                  }
                | any_var_or_arr '=' region_or_var
                  {
-                     variable_definitions = add_vardef_type(variable_definitions, $1, SPOVAR_REGION);
+                     vardefs = add_vardef_type(vardefs, $1, SPOVAR_REGION);
                      add_opvars(splev, "iso", VA_PASS3(0, $1, SPO_VAR_INIT));
                      Free($1);
                  }
                | any_var_or_arr '=' '{' integer_list '}'
                  {
-                     long n_items = $4;
-                     variable_definitions = add_vardef_type(variable_definitions, $1, SPOVAR_INT|SPOVAR_ARRAY);
+                     int n_items = (int) $4;
+
+                     vardefs = add_vardef_type(vardefs, $1,
+                                                SPOVAR_INT | SPOVAR_ARRAY);
                      add_opvars(splev, "iso",
                                 VA_PASS3(n_items, $1, SPO_VAR_INIT));
                      Free($1);
                  }
                | any_var_or_arr '=' '{' encodecoord_list '}'
                  {
-                     long n_items = $4;
-                     variable_definitions = add_vardef_type(variable_definitions, $1, SPOVAR_COORD|SPOVAR_ARRAY);
+                     int n_items = (int) $4;
+
+                     vardefs = add_vardef_type(vardefs, $1,
+                                                SPOVAR_COORD | SPOVAR_ARRAY);
                      add_opvars(splev, "iso",
                                 VA_PASS3(n_items, $1, SPO_VAR_INIT));
                      Free($1);
                  }
                | any_var_or_arr '=' '{' encoderegion_list '}'
                  {
-                     long n_items = $4;
-                     variable_definitions = add_vardef_type(variable_definitions, $1, SPOVAR_REGION|SPOVAR_ARRAY);
+                      int n_items = (int) $4;
+
+                     vardefs = add_vardef_type(vardefs, $1,
+                                                SPOVAR_REGION | SPOVAR_ARRAY);
                      add_opvars(splev, "iso",
                                 VA_PASS3(n_items, $1, SPO_VAR_INIT));
                      Free($1);
                  }
                | any_var_or_arr '=' terrainid ':' '{' mapchar_list '}'
                  {
-                     long n_items = $6;
-                     variable_definitions = add_vardef_type(variable_definitions, $1, SPOVAR_MAPCHAR|SPOVAR_ARRAY);
+                      int n_items = (int) $6;
+
+                     vardefs = add_vardef_type(vardefs, $1,
+                                                SPOVAR_MAPCHAR | SPOVAR_ARRAY);
                      add_opvars(splev, "iso",
                                 VA_PASS3(n_items, $1, SPO_VAR_INIT));
                      Free($1);
                  }
                | any_var_or_arr '=' monsterid ':' '{' encodemonster_list '}'
                  {
-                     long n_items = $6;
-                     variable_definitions = add_vardef_type(variable_definitions, $1, SPOVAR_MONST|SPOVAR_ARRAY);
+                     int n_items = (int) $6;
+
+                     vardefs = add_vardef_type(vardefs, $1,
+                                                SPOVAR_MONST | SPOVAR_ARRAY);
                      add_opvars(splev, "iso",
                                 VA_PASS3(n_items, $1, SPO_VAR_INIT));
                      Free($1);
                  }
                | any_var_or_arr '=' objectid ':' '{' encodeobj_list '}'
                  {
-                     long n_items = $6;
-                     variable_definitions = add_vardef_type(variable_definitions, $1, SPOVAR_OBJ|SPOVAR_ARRAY);
+                      int n_items = (int) $6;
+
+                     vardefs = add_vardef_type(vardefs, $1,
+                                                SPOVAR_OBJ | SPOVAR_ARRAY);
                      add_opvars(splev, "iso",
                                 VA_PASS3(n_items, $1, SPO_VAR_INIT));
                      Free($1);
                  }
                | any_var_or_arr '=' '{' string_list '}'
                  {
-                     long n_items = $4;
-                     variable_definitions = add_vardef_type(variable_definitions, $1, SPOVAR_STRING|SPOVAR_ARRAY);
+                      int n_items = (int) $4;
+
+                     vardefs = add_vardef_type(vardefs, $1,
+                                                SPOVAR_STRING | SPOVAR_ARRAY);
                      add_opvars(splev, "iso",
                                 VA_PASS3(n_items, $1, SPO_VAR_INIT));
                      Free($1);
@@ -759,8 +789,8 @@ function_define     : FUNCTION_ID NQSTRING '('
                      splev = &(funcdef->code);
                      Free($2);
                      curr_function = funcdef;
-                     function_tmp_var_defs = variable_definitions;
-                     variable_definitions = NULL;
+                     function_tmp_var_defs = vardefs;
+                     vardefs = NULL;
                  }
                func_params_list ')'
                  {
@@ -772,22 +802,26 @@ function_define   : FUNCTION_ID NQSTRING '('
                      splev = function_splev_backup;
                      in_function_definition--;
                      curr_function = NULL;
-                     vardef_free_all(variable_definitions);
-                     variable_definitions = function_tmp_var_defs;
+                     vardef_free_all(vardefs);
+                     vardefs = function_tmp_var_defs;
                  }
                ;
 
 function_call  : NQSTRING '(' func_call_params_list ')'
                  {
                      struct lc_funcdefs *tmpfunc;
+
                      tmpfunc = funcdef_defined(function_definitions, $1, 1);
                      if (tmpfunc) {
-                         long l;
-                         long nparams = strlen( $3 );
+                         int l;
+                         int nparams = (int) strlen($3);
                          char *fparamstr = funcdef_paramtypes(tmpfunc);
+
                          if (strcmp($3, fparamstr)) {
                              char *tmps = strdup(decode_parm_str(fparamstr));
-                             lc_error("Function '%s' requires params '%s', got '%s' instead.", $1, tmps, decode_parm_str($3));
+
+                             lc_error("Function '%s' requires params '%s', got '%s' instead.",
+                                       $1, tmps, decode_parm_str($3));
                              Free(tmps);
                          }
                          Free(fparamstr);
@@ -795,9 +829,11 @@ function_call      : NQSTRING '(' func_call_params_list ')'
                          if (!(tmpfunc->n_called)) {
                              /* we haven't called the function yet, so insert it in the code */
                              struct opvar *jmp = New(struct opvar);
+
                              set_opvar_int(jmp, splev->n_opcodes+1);
                              add_opcode(splev, SPO_PUSH, jmp);
-                             add_opcode(splev, SPO_JMP, NULL); /* we must jump past it first, then CALL it, due to RETURN. */
+                              /* we must jump past it first, then CALL it, due to RETURN. */
+                             add_opcode(splev, SPO_JMP, NULL);
 
                              tmpfunc->addr = splev->n_opcodes;
 
@@ -812,9 +848,10 @@ function_call      : NQSTRING '(' func_call_params_list ')'
                              }
 
                              splev_add_from(splev, &(tmpfunc->code));
-                             set_opvar_int(jmp, splev->n_opcodes - jmp->vardata.l);
+                             set_opvar_int(jmp,
+                                            splev->n_opcodes - jmp->vardata.l);
                          }
-                         l = tmpfunc->addr - splev->n_opcodes - 2;
+                         l = (int) (tmpfunc->addr - splev->n_opcodes - 2);
                          add_opvars(splev, "iio",
                                     VA_PASS3(nparams, l, SPO_CALL));
                          tmpfunc->n_called++;
@@ -845,7 +882,7 @@ comparestmt     : PERCENT
                   {
                      /* val > rn2(100) */
                      add_opvars(splev, "iio",
-                                VA_PASS3((long)$1, 100, SPO_RN2));
+                                VA_PASS3((int) $1, 100, SPO_RN2));
                      $$ = SPO_JG;
                   }
                | '[' math_expr_var COMPARE_TYPE math_expr_var ']'
@@ -867,6 +904,7 @@ switchstatement     : SWITCH_ID
                  '[' integer_or_var ']'
                  {
                      struct opvar *chkjmp;
+
                      if (in_switch_statement > 0)
                          lc_error("Cannot nest switch-statements.");
 
@@ -935,6 +973,7 @@ switchcase  : CASE_ID all_integers ':'
                  {
                      if (n_switch_case_list < MAX_SWITCH_CASES) {
                          struct opvar *tmppush = New(struct opvar);
+
                          set_opvar_int(tmppush, splev->n_opcodes);
                          switch_case_value[n_switch_case_list] = $2;
                          switch_case_list[n_switch_case_list++] = tmppush;
@@ -986,8 +1025,7 @@ forstmt_start      : FOR_ID any_var_or_unk '=' math_expr_var for_to_span math_expr_va
                      /* the value of which is already in stack (the 2nd math_expr) */
                      add_opvars(splev, "iso", VA_PASS3(0, buf, SPO_VAR_INIT));
 
-                     variable_definitions = add_vardef_type(variable_definitions,
-                                                            $2, SPOVAR_INT);
+                     vardefs = add_vardef_type(vardefs, $2, SPOVAR_INT);
                      /* define the for-loop variable. value is in stack (1st math_expr) */
                      add_opvars(splev, "iso", VA_PASS3(0, $2, SPO_VAR_INIT));
 
@@ -1017,6 +1055,7 @@ forstatement      : forstmt_start
                  }
                 stmt_block
                  {
+                      int l;
                      char buf[256], buf2[256];
 
                      n_forloops--;
@@ -1035,10 +1074,9 @@ forstatement     : forstmt_start
                                 VA_PASS3(0, forloop_list[n_forloops].varname,
                                          SPO_VAR_INIT));
                      /* jump back if compared values were not equal */
-                     add_opvars(splev, "io",
-                                VA_PASS2(
-                   forloop_list[n_forloops].jmp_point - splev->n_opcodes - 1,
-                                         SPO_JNE));
+                      l = (int) (forloop_list[n_forloops].jmp_point
+                                 - splev->n_opcodes - 1);
+                     add_opvars(splev, "io", VA_PASS2(l, SPO_JNE));
                      Free(forloop_list[n_forloops].varname);
                      break_stmt_end(splev);
                  }
@@ -1065,10 +1103,11 @@ loopstatement   : LOOP_ID '[' integer_or_var ']'
                      add_opvars(splev, "oio", VA_PASS3(SPO_COPY, 0, SPO_CMP));
 
                      tmppush = (struct opvar *) if_list[--n_if_list];
-                     set_opvar_int(tmppush, tmppush->vardata.l - splev->n_opcodes-1);
+                     set_opvar_int(tmppush,
+                                    tmppush->vardata.l - splev->n_opcodes-1);
                      add_opcode(splev, SPO_PUSH, tmppush);
                      add_opcode(splev, SPO_JG, NULL);
-                     add_opcode(splev, SPO_POP, NULL); /* get rid of the count value in stack */
+                     add_opcode(splev, SPO_POP, NULL); /* discard count */
                      break_stmt_end(splev);
                  }
                ;
@@ -1097,8 +1136,10 @@ chancestatement  : comparestmt ':'
                  {
                      if (n_if_list > 0) {
                          struct opvar *tmppush;
+
                          tmppush = (struct opvar *) if_list[--n_if_list];
-                         set_opvar_int(tmppush, splev->n_opcodes - tmppush->vardata.l);
+                         set_opvar_int(tmppush,
+                                        splev->n_opcodes - tmppush->vardata.l);
                      } else lc_error("IF: Huh?!  No start address?");
                  }
                ;
@@ -1133,8 +1174,10 @@ if_ending        : stmt_block
                  {
                      if (n_if_list > 0) {
                          struct opvar *tmppush;
+
                          tmppush = (struct opvar *) if_list[--n_if_list];
-                         set_opvar_int(tmppush, splev->n_opcodes - tmppush->vardata.l);
+                         set_opvar_int(tmppush,
+                                        splev->n_opcodes - tmppush->vardata.l);
                      } else lc_error("IF: Huh?!  No start address?");
                  }
                | stmt_block
@@ -1150,7 +1193,8 @@ if_ending : stmt_block
 
                          tmppush2 = (struct opvar *) if_list[--n_if_list];
 
-                         set_opvar_int(tmppush2, splev->n_opcodes - tmppush2->vardata.l);
+                         set_opvar_int(tmppush2,
+                                      splev->n_opcodes - tmppush2->vardata.l);
                          if_list[n_if_list++] = tmppush;
                      } else lc_error("IF: Huh?!  No else-part address?");
                  }
@@ -1363,21 +1407,21 @@ door_pos        : INTEGER
 map_definition : NOMAP_ID
                  {
                      add_opvars(splev, "ciisiio",
-                                VA_PASS7(0, 0, 1, (char *)0, 0, 0, SPO_MAP));
+                                VA_PASS7(0, 0, 1, (char *) 0, 0, 0, SPO_MAP));
                      max_x_map = COLNO-1;
                      max_y_map = ROWNO;
                  }
                | GEOMETRY_ID ':' h_justif ',' v_justif roomfill MAP_ID
                  {
                      add_opvars(splev, "cii",
-                                VA_PASS3(SP_COORD_PACK(($3),($5)),
-                                         1, (long)$6));
+                                VA_PASS3(SP_COORD_PACK(($3), ($5)),
+                                         1, (int) $6));
                      scan_map($7, splev);
                      Free($7);
                  }
                | GEOMETRY_ID ':' coord_or_var roomfill MAP_ID
                  {
-                     add_opvars(splev, "ii", VA_PASS2(2, (long)$4));
+                     add_opvars(splev, "ii", VA_PASS2(2, (int) $4));
                      scan_map($5, splev);
                      Free($5);
                  }
@@ -1418,6 +1462,7 @@ monster_desc      : monster_or_var ',' coord_or_var monster_infos
 monster_infos  : /* nothing */
                  {
                      struct opvar *stopit = New(struct opvar);
+
                      set_opvar_int(stopit, SP_M_V_END);
                      add_opcode(splev, SPO_PUSH, stopit);
                      $$ = 0x0000;
@@ -1438,25 +1483,25 @@ monster_info    : string_expr
                | MON_ATTITUDE
                  {
                      add_opvars(splev, "ii",
-                                VA_PASS2((long)$<i>1, SP_M_V_PEACEFUL));
+                                VA_PASS2((int) $<i>1, SP_M_V_PEACEFUL));
                      $$ = 0x0002;
                  }
                | MON_ALERTNESS
                  {
                      add_opvars(splev, "ii",
-                                VA_PASS2((long)$<i>1, SP_M_V_ASLEEP));
+                                VA_PASS2((int) $<i>1, SP_M_V_ASLEEP));
                      $$ = 0x0004;
                  }
                | alignment_prfx
                  {
                      add_opvars(splev, "ii",
-                                VA_PASS2((long)$1, SP_M_V_ALIGN));
+                                VA_PASS2((int) $1, SP_M_V_ALIGN));
                      $$ = 0x0008;
                  }
                | MON_APPEARANCE string_expr
                  {
                      add_opvars(splev, "ii",
-                                VA_PASS2((long)$<i>1, SP_M_V_APPEAR));
+                                VA_PASS2((int) $<i>1, SP_M_V_APPEAR));
                      $$ = 0x0010;
                  }
                | FEMALE_ID
@@ -1512,7 +1557,7 @@ monster_info      : string_expr
                | SEENTRAPS_ID ':' seen_trap_mask
                  {
                      add_opvars(splev, "ii",
-                                VA_PASS2((long)$3, SP_M_V_SEENTRAPS));
+                                VA_PASS2((int) $3, SP_M_V_SEENTRAPS));
                      $$ = 0x8000;
                  }
                ;
@@ -1520,6 +1565,7 @@ monster_info      : string_expr
 seen_trap_mask : STRING
                  {
                      int token = get_trap_type($1);
+
                      if (token == ERR || token == 0)
                          lc_error("Unknown trap type '%s'!", $1);
                       Free($1);
@@ -1544,14 +1590,18 @@ seen_trap_mask  : STRING
 
 object_detail  : OBJECT_ID ':' object_desc
                  {
-                     long cnt = 0;
-                     if (in_container_obj) cnt |= SP_OBJ_CONTENT;
+                     int cnt = 0;
+
+                     if (in_container_obj)
+                          cnt |= SP_OBJ_CONTENT;
                      add_opvars(splev, "io", VA_PASS2(cnt, SPO_OBJECT));
                  }
                | COBJECT_ID ':' object_desc
                  {
-                     long cnt = SP_OBJ_CONTAINER;
-                     if (in_container_obj) cnt |= SP_OBJ_CONTENT;
+                     int cnt = SP_OBJ_CONTAINER;
+
+                     if (in_container_obj)
+                          cnt |= SP_OBJ_CONTENT;
                      add_opvars(splev, "io", VA_PASS2(cnt, SPO_OBJECT));
                      in_container_obj++;
                      break_stmt_start();
@@ -1591,7 +1641,7 @@ object_infos      : /* nothing */
 object_info    : CURSE_TYPE
                  {
                      add_opvars(splev, "ii",
-                                VA_PASS2((long)$1, SP_O_V_CURSE));
+                                VA_PASS2((int) $1, SP_O_V_CURSE));
                      $$ = 0x0001;
                  }
                | MONTYPE_ID ':' monster_or_var
@@ -1621,7 +1671,7 @@ object_info       : CURSE_TYPE
                  }
                | LIGHT_STATE
                  {
-                     add_opvars(splev, "ii", VA_PASS2((long)$1, SP_O_V_LIT));
+                     add_opvars(splev, "ii", VA_PASS2((int) $1, SP_O_V_LIT));
                      $$ = 0x0040;
                  }
                | ERODED_ID ':' integer_or_var
@@ -1647,7 +1697,8 @@ object_info       : CURSE_TYPE
                  }
                | TRAPPED_STATE
                  {
-                     add_opvars(splev, "ii", VA_PASS2($1, SP_O_V_TRAPPED));
+                     add_opvars(splev, "ii",
+                                 VA_PASS2((int) 1, SP_O_V_TRAPPED));
                      $$ = 0x0400;
                  }
                | RECHARGED_ID ':' integer_or_var
@@ -1674,7 +1725,7 @@ object_info       : CURSE_TYPE
 
 trap_detail    : TRAP_ID ':' trap_name ',' coord_or_var
                  {
-                     add_opvars(splev, "io", VA_PASS2((long)$3, SPO_TRAP));
+                     add_opvars(splev, "io", VA_PASS2((int) $3, SPO_TRAP));
                  }
                ;
 
@@ -1710,13 +1761,13 @@ drawbridge_detail: DRAWBRIDGE_ID ':' coord_or_var ',' DIRECTION ',' door_state
 mazewalk_detail : MAZEWALK_ID ':' coord_or_var ',' DIRECTION
                  {
                      add_opvars(splev, "iiio",
-                                VA_PASS4((long)$5, 1, 0, SPO_MAZEWALK));
+                                VA_PASS4((int) $5, 1, 0, SPO_MAZEWALK));
                  }
                | MAZEWALK_ID ':' coord_or_var ',' DIRECTION ',' BOOLEAN opt_fillchar
                  {
                      add_opvars(splev, "iiio",
-                                VA_PASS4((long)$5, (long)$<i>7,
-                                         (long)$8, SPO_MAZEWALK));
+                                VA_PASS4((int) $5, (int) $<i>7,
+                                         (int) $8, SPO_MAZEWALK));
                  }
                ;
 
@@ -1735,14 +1786,14 @@ wallify_detail  : WALLIFY_ID
 ladder_detail  : LADDER_ID ':' coord_or_var ',' UP_OR_DOWN
                  {
                      add_opvars(splev, "io",
-                                VA_PASS2((long)$<i>5, SPO_LADDER));
+                                VA_PASS2((int) $<i>5, SPO_LADDER));
                  }
                ;
 
 stair_detail   : STAIR_ID ':' coord_or_var ',' UP_OR_DOWN
                  {
                      add_opvars(splev, "io",
-                                VA_PASS2((long)$<i>5, SPO_STAIR));
+                                VA_PASS2((int) $<i>5, SPO_STAIR));
                  }
                ;
 
@@ -2040,15 +2091,16 @@ string_or_var   : STRING
                  }
                | VARSTRING_STRING
                  {
-                     check_vardef_type(variable_definitions, $1, SPOVAR_STRING);
-                     vardef_used(variable_definitions, $1);
+                     check_vardef_type(vardefs, $1, SPOVAR_STRING);
+                     vardef_used(vardefs, $1);
                      add_opvars(splev, "v", VA_PASS1($1));
                      Free($1);
                  }
                | VARSTRING_STRING_ARRAY '[' math_expr_var ']'
                  {
-                     check_vardef_type(variable_definitions, $1, SPOVAR_STRING|SPOVAR_ARRAY);
-                     vardef_used(variable_definitions, $1);
+                     check_vardef_type(vardefs, $1,
+                                        SPOVAR_STRING | SPOVAR_ARRAY);
+                     vardef_used(vardefs, $1);
                      add_opvars(splev, "v", VA_PASS1($1));
                      Free($1);
                  }
@@ -2071,15 +2123,16 @@ coord_or_var    : encodecoord
                  }
                | VARSTRING_COORD
                  {
-                     check_vardef_type(variable_definitions, $1, SPOVAR_COORD);
-                     vardef_used(variable_definitions, $1);
+                     check_vardef_type(vardefs, $1, SPOVAR_COORD);
+                     vardef_used(vardefs, $1);
                      add_opvars(splev, "v", VA_PASS1($1));
                      Free($1);
                  }
                | VARSTRING_COORD_ARRAY '[' math_expr_var ']'
                  {
-                     check_vardef_type(variable_definitions, $1, SPOVAR_COORD|SPOVAR_ARRAY);
-                     vardef_used(variable_definitions, $1);
+                     check_vardef_type(vardefs, $1,
+                                        SPOVAR_COORD | SPOVAR_ARRAY);
+                     vardef_used(vardefs, $1);
                      add_opvars(splev, "v", VA_PASS1($1));
                      Free($1);
                  }
@@ -2088,7 +2141,8 @@ coord_or_var      : encodecoord
 encodecoord    : '(' INTEGER ',' INTEGER ')'
                  {
                      if ($2 < 0 || $4 < 0 || $2 >= COLNO || $4 >= ROWNO)
-                         lc_error("Coordinates (%li,%li) out of map range!", $2, $4);
+                          lc_error("Coordinates (%li,%li) out of map range!",
+                                   $2, $4);
                      $$ = SP_COORD_PACK($2, $4);
                  }
                | RANDOM_TYPE
@@ -2097,7 +2151,7 @@ encodecoord       : '(' INTEGER ',' INTEGER ')'
                  }
                | RANDOM_TYPE_BRACKET humidity_flags ']'
                  {
-                     $$ = SP_COORD_PACK_RANDOM( $2 );
+                     $$ = SP_COORD_PACK_RANDOM($2);
                  }
                ;
 
@@ -2119,15 +2173,16 @@ region_or_var   : encoderegion
                  }
                | VARSTRING_REGION
                  {
-                     check_vardef_type(variable_definitions, $1, SPOVAR_REGION);
-                     vardef_used(variable_definitions, $1);
+                     check_vardef_type(vardefs, $1, SPOVAR_REGION);
+                     vardef_used(vardefs, $1);
                      add_opvars(splev, "v", VA_PASS1($1));
                      Free($1);
                  }
                | VARSTRING_REGION_ARRAY '[' math_expr_var ']'
                  {
-                     check_vardef_type(variable_definitions, $1, SPOVAR_REGION|SPOVAR_ARRAY);
-                     vardef_used(variable_definitions, $1);
+                     check_vardef_type(vardefs, $1,
+                                        SPOVAR_REGION | SPOVAR_ARRAY);
+                     vardef_used(vardefs, $1);
                      add_opvars(splev, "v", VA_PASS1($1));
                      Free($1);
                  }
@@ -2136,8 +2191,10 @@ region_or_var    : encoderegion
 encoderegion   : '(' INTEGER ',' INTEGER ',' INTEGER ',' INTEGER ')'
                  {
                      long r = SP_REGION_PACK($2, $4, $6, $8);
-                     if ( $2 > $6 || $4 > $8 )
-                         lc_error("Region start > end: (%li,%li,%li,%li)!", $2, $4, $6, $8);
+
+                     if ($2 > $6 || $4 > $8)
+                         lc_error("Region start > end: (%ld,%ld,%ld,%ld)!",
+                                   $2, $4, $6, $8);
 
                      add_opvars(splev, "r", VA_PASS1(r));
                      $$ = r;
@@ -2150,15 +2207,16 @@ mapchar_or_var  : mapchar
                  }
                | VARSTRING_MAPCHAR
                  {
-                     check_vardef_type(variable_definitions, $1, SPOVAR_MAPCHAR);
-                     vardef_used(variable_definitions, $1);
+                     check_vardef_type(vardefs, $1, SPOVAR_MAPCHAR);
+                     vardef_used(vardefs, $1);
                      add_opvars(splev, "v", VA_PASS1($1));
                      Free($1);
                  }
                | VARSTRING_MAPCHAR_ARRAY '[' math_expr_var ']'
                  {
-                     check_vardef_type(variable_definitions, $1, SPOVAR_MAPCHAR|SPOVAR_ARRAY);
-                     vardef_used(variable_definitions, $1);
+                     check_vardef_type(vardefs, $1,
+                                        SPOVAR_MAPCHAR | SPOVAR_ARRAY);
+                     vardef_used(vardefs, $1);
                      add_opvars(splev, "v", VA_PASS1($1));
                      Free($1);
                  }
@@ -2190,15 +2248,16 @@ monster_or_var  : encodemonster
                  }
                | VARSTRING_MONST
                  {
-                     check_vardef_type(variable_definitions, $1, SPOVAR_MONST);
-                     vardef_used(variable_definitions, $1);
+                     check_vardef_type(vardefs, $1, SPOVAR_MONST);
+                     vardef_used(vardefs, $1);
                      add_opvars(splev, "v", VA_PASS1($1));
                      Free($1);
                  }
                | VARSTRING_MONST_ARRAY '[' math_expr_var ']'
                  {
-                     check_vardef_type(variable_definitions, $1, SPOVAR_MONST|SPOVAR_ARRAY);
-                     vardef_used(variable_definitions, $1);
+                     check_vardef_type(vardefs, $1,
+                                        SPOVAR_MONST | SPOVAR_ARRAY);
+                     vardef_used(vardefs, $1);
                      add_opvars(splev, "v", VA_PASS1($1));
                      Free($1);
                  }
@@ -2246,15 +2305,16 @@ object_or_var   : encodeobj
                  }
                | VARSTRING_OBJ
                  {
-                     check_vardef_type(variable_definitions, $1, SPOVAR_OBJ);
-                     vardef_used(variable_definitions, $1);
+                     check_vardef_type(vardefs, $1, SPOVAR_OBJ);
+                     vardef_used(vardefs, $1);
                      add_opvars(splev, "v", VA_PASS1($1));
                      Free($1);
                  }
                | VARSTRING_OBJ_ARRAY '[' math_expr_var ']'
                  {
-                     check_vardef_type(variable_definitions, $1, SPOVAR_OBJ|SPOVAR_ARRAY);
-                     vardef_used(variable_definitions, $1);
+                     check_vardef_type(vardefs, $1,
+                                        SPOVAR_OBJ | SPOVAR_ARRAY);
+                     vardef_used(vardefs, $1);
                      add_opvars(splev, "v", VA_PASS1($1));
                      Free($1);
                  }
@@ -2267,7 +2327,8 @@ encodeobj : STRING
                          lc_error("Unknown object \"%s\"!", $1);
                          $$ = -1;
                      } else
-                         $$ = SP_OBJ_PACK(m, 1); /* obj class != 0 to force generation of a specific item */
+                          /* obj class != 0 to force generation of a specific item */
+                          $$ = SP_OBJ_PACK(m, 1);
                       Free($1);
                  }
                | CHAR
@@ -2317,17 +2378,17 @@ math_expr_var   : INTEGER
                  }
                | VARSTRING_INT
                  {
-                     check_vardef_type(variable_definitions, $1, SPOVAR_INT);
-                     vardef_used(variable_definitions, $1);
+                     check_vardef_type(vardefs, $1, SPOVAR_INT);
+                     vardef_used(vardefs, $1);
                      add_opvars(splev, "v", VA_PASS1($1));
                      Free($1);
                      is_inconstant_number = 1;
                  }
                | VARSTRING_INT_ARRAY '[' math_expr_var ']'
                  {
-                     check_vardef_type(variable_definitions,
-                                       $1, SPOVAR_INT|SPOVAR_ARRAY);
-                     vardef_used(variable_definitions, $1);
+                     check_vardef_type(vardefs, $1,
+                                       SPOVAR_INT | SPOVAR_ARRAY);
+                     vardef_used(vardefs, $1);
                      add_opvars(splev, "v", VA_PASS1($1));
                      Free($1);
                      is_inconstant_number = 1;
@@ -2398,9 +2459,7 @@ func_param_part   : any_var_or_arr ':' func_param_type
                               lc_error("Unknown func param conversion.");
                               break;
                          }
-                         variable_definitions = add_vardef_type(
-                                                        variable_definitions,
-                                                                $1, vt);
+                         vardefs = add_vardef_type( vardefs, $1, vt);
                      }
                      Free($1);
                  }
@@ -2531,8 +2590,8 @@ ter_selection_x   : coord_or_var
                  }
                | VARSTRING_SEL
                  {
-                     check_vardef_type(variable_definitions, $1, SPOVAR_SEL);
-                     vardef_used(variable_definitions, $1);
+                     check_vardef_type(vardefs, $1, SPOVAR_SEL);
+                     vardef_used(vardefs, $1);
                      add_opvars(splev, "v", VA_PASS1($1));
                      Free($1);
                  }
index ecf7a444c45ef9b120b70bfcc33025c78e905963..8bcfc8365adf9cfe4ec6936ee0203e03d7e1eb58 100644 (file)
@@ -1,4 +1,4 @@
-/* NetHack 3.6 lev_main.c      $NHDT-Date: 1501723418 2017/08/03 01:23:38 $  $NHDT-Branch: NetHack-3.6.0 $:$NHDT-Revision: 1.47 $ */
+/* NetHack 3.6 lev_main.c      $NHDT-Date: 1543371692 2018/11/28 02:21:32 $  $NHDT-Branch: NetHack-3.6.2-beta01 $:$NHDT-Revision: 1.56 $ */
 /*      Copyright (c) 1989 by Jean-Christophe Collet */
 /* NetHack may be freely redistributed.  See license for details. */
 
@@ -226,7 +226,7 @@ extern int nh_line_number;
 extern int token_start_pos;
 extern char curr_token[512];
 
-struct lc_vardefs *variable_definitions = NULL;
+struct lc_vardefs *vardefs = NULL;
 struct lc_funcdefs *function_definitions = NULL;
 
 extern int allow_break_statements;
@@ -641,9 +641,18 @@ VA_DECL2(sp_lev *, sp, const char *, fmt)
         switch (*p) {
         case ' ':
             break;
-        case 'i': /* integer */
+        case 'i': /* integer (via plain 'int') */
         {
             struct opvar *ov = New(struct opvar);
+
+            set_opvar_int(ov, (long) VA_NEXT(la, int));
+            add_opcode(sp, SPO_PUSH, ov);
+            break;
+        }
+        case 'l': /* integer (via 'long int') */
+        {
+            struct opvar *ov = New(struct opvar);
+
             set_opvar_int(ov, VA_NEXT(la, long));
             add_opcode(sp, SPO_PUSH, ov);
             break;
@@ -1105,8 +1114,8 @@ char *ldfname;
     (*splev)->n_opcodes = 0;
     (*splev)->opcodes = NULL;
 
-    vardef_free_all(variable_definitions);
-    variable_definitions = NULL;
+    vardef_free_all(vardefs);
+    vardefs = NULL;
 }
 
 /*
@@ -1436,7 +1445,7 @@ sp_lev *sp;
 
     mbuf[((max_hig - 1) * max_len) + (max_len - 1) + 1] = '\0';
 
-    add_opvars(sp, "siio", VA_PASS4(mbuf, (long) max_hig, (long) max_len,
+    add_opvars(sp, "sllo", VA_PASS4(mbuf, (long) max_hig, (long) max_len,
                                     SPO_MAP));
 
     for (dy = 0; dy < max_hig; dy++)