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.
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);