From c01996899742349fec8d3345fce8e1125902301a Mon Sep 17 00:00:00 2001 From: Pasi Kallinen Date: Sat, 26 Jun 2021 15:10:38 +0300 Subject: [PATCH] Clear all room data Restoring a level cleared residence pointer from those subrooms which were in the restored level, but if the previous level had more subrooms, those pointers weren't cleared. This caused weird problems when a shopkeeper data was looked up based on the subroom number. Just to be safe, clear all the room data when freeing the level. --- src/save.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/save.c b/src/save.c index 0153d4018..735a0d419 100644 --- a/src/save.c +++ b/src/save.c @@ -523,6 +523,9 @@ savelev(NHFILE* nhfp, xchar lev) g.level.buriedobjlist = 0; g.billobjs = 0; stairway_free_all(); + (void) memset(g.rooms, 0, sizeof(g.rooms)); + g.nroom = g.nsubroom = 0; + g.rooms[0].hx = g.subrooms[0].hx = -1; /* level.bonesinfo = 0; -- handled by savecemetery() */ } save_engravings(nhfp);