Just zero out the allocated memory.
Explicitly setting struct field values isn't enough, because field alignment
means there can be several unused bytes which are written to savefile.
{
stairway *tmp = (stairway *) alloc(sizeof (stairway));
+ (void) memset((genericptr_t) tmp, 0, sizeof (stairway));
tmp->sx = x;
tmp->sy = y;
tmp->up = up;
if (!gd.doors || gd.doorindex >= gd.doors_alloc) {
int c = gd.doors_alloc + DOORINC;
coord *doortmp = (coord *) alloc(c * sizeof(coord));
+
+ (void) memset((genericptr_t) doortmp, 0, c * sizeof(coord));
if (gd.doors) {
(void) memcpy(doortmp, gd.doors, gd.doors_alloc * sizeof(coord));
free(gd.doors);