From: Pasi Kallinen Date: Sat, 26 Jun 2021 12:10:38 +0000 (+0300) Subject: Clear all room data X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=c01996899742349fec8d3345fce8e1125902301a;p=nethack 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. --- 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);