Cease relying on C storage starting zeroed.
authorEric S. Raymond <esr@thyrsus.com>
Thu, 27 Jun 2024 23:50:56 +0000 (19:50 -0400)
committerEric S. Raymond <esr@thyrsus.com>
Thu, 27 Jun 2024 23:50:56 +0000 (19:50 -0400)
init.c

diff --git a/init.c b/init.c
index e413fff4dabc623ea1f22842e48b70cb8a8679e1..2fffc144d195aa8d4b1aa90685b96601506097f5 100644 (file)
--- a/init.c
+++ b/init.c
@@ -76,13 +76,18 @@ int initialise(void) {
        /*  Treasure props are initially STATE_NOTFOUND, and are set to
         *  STATE_FOUND the first time they are described.  game.tally
         *  keeps track of how many are not yet found, so we know when to
-        *  close the cave. */
-       for (int treasure = 1; treasure <= NOBJECTS; treasure++) {
-               if (objects[treasure].is_treasure) {
+        *  close the cave.
+        *  (ESR) Non-trreasures are set to STATE_FOUND explicity so we
+        *  don't rely on the value of uninitialized storage. This is to
+        *  make translation to future languages easier. */
+       for (int object = 1; object <= NOBJECTS; object++) {
+               if (objects[object].is_treasure) {
                        ++game.tally;
-                       if (objects[treasure].inventory != 0) {
-                               PROP_SET_NOT_FOUND(treasure);
+                       if (objects[object].inventory != NULL) {
+                               PROP_SET_NOT_FOUND(object);
                        }
+               } else {
+                       PROP_SET_FOUND(object);
                }
        }
        game.conds = setbit(COND_HBASE);