Update to commit d9e45a19b61c54bc804232fdc67485b84c7af8e9 dated May 21, 2020. These...
[inform.git] / src / veneer.c
index 2f701595ebe104b6a7a0237edc820a800260583e..519e08552617f3547d5122dfcf8837f66784c6d9 100644 (file)
@@ -3,7 +3,7 @@
 /*              by the compiler (e.g. DefArt) which the program doesn't      */
 /*              provide                                                      */
 /*                                                                           */
-/* Copyright (c) Graham Nelson 1993 - 2018                                   */
+/* Copyright (c) Graham Nelson 1993 - 2020                                   */
 /*                                                                           */
 /* This file is part of Inform.                                              */
 /*                                                                           */
@@ -246,7 +246,11 @@ static VeneerRoutine VRs_z[VENEER_ROUTINES] =
          {   if (identifier >= 1 && identifier < 64 && obj.#identifier <= 2)\
                  return obj.identifier;\
              RT__Err(\"read\", obj, identifier); return; }\
+         #IFV3;\
+         if (obj..#identifier > 2) RT__Err(\"read\", obj, identifier);\
+         #IFNOT;\
          if (obj..#identifier > 2) RT__Err(\"read\", obj, identifier, 2);\
+         #ENDIF;\
          return x-->0;\
          ]", "", "", "", "", ""
     },
@@ -2244,7 +2248,7 @@ static void compile_symbol_table_routine(void)
             AO3.marker = 0;
             assemblez_store(temp_var3, AO3);
             AO3.value = svals[array_symbols[j]];
-            AO3.marker = ARRAY_MV;
+            AO3.marker = (!array_locs[j] ? ARRAY_MV : STATIC_ARRAY_MV);
             assemblez_1(ret_zc, AO3);
             assemble_label_no(nl);
         }