From 98b21323a65a6a80170dfabcfe08ac991f6814e8 Mon Sep 17 00:00:00 2001 From: NHOrus Date: Thu, 24 Aug 2017 11:21:10 +0300 Subject: [PATCH] Bounds check for properties; it is not violated in normal game --- saveresume.c | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) diff --git a/saveresume.c b/saveresume.c index c1b5eb2..8a33c3e 100644 --- a/saveresume.c +++ b/saveresume.c @@ -184,6 +184,33 @@ bool is_valid(struct game_t valgame) return false; } + /* Check that properties of objects aren't beyond expected */ + for (int obj = 0; obj <= NOBJECTS; obj++) { + if (game.prop[obj] < STATE_NOTFOUND || game.prop[obj] > 1) { + switch (obj) { + case RUG: + case DRAGON: + case BIRD: + case BOTTLE: + case PLANT: + case PLANT2: + case TROLL: + case URN: + case EGGS: + case VASE: + case CHAIN: + if (game.prop[obj] == 2) // There are multiple different states, but it's convenient to clump them together + continue; + case BEAR: + if (game.prop[BEAR] == CONTENTED_BEAR || game.prop[BEAR] == BEAR_DEAD) + continue; + default: + printf("%i", obj); + return false; + } + } + } + return true; } -- 2.31.1