stairway save/restore bit

The logic surrounding stairway saves and restores should not be within
a block reserved for deliminating external file structure.
This commit is contained in:
nhmall
2020-12-03 10:05:31 -05:00
parent cf88808285
commit f543763695
2 changed files with 14 additions and 15 deletions

View File

@@ -923,15 +923,14 @@ NHFILE *nhfp;
if (buflen == -1)
break;
len += (int) sizeof (stairway);
if (nhfp->structlevel) {
len += (int) sizeof (stairway);
mread(nhfp->fd, (genericptr_t) &stway, sizeof (stairway));
if (stway.tolev.dnum == u.uz.dnum) {
/* stairway dlevel is relative, make it absolute */
stway.tolev.dlevel += u.uz.dlevel;
}
}
if (stway.tolev.dnum == u.uz.dnum) {
/* stairway dlevel is relative, make it absolute */
stway.tolev.dlevel += u.uz.dlevel;
}
stairway_add(stway.sx, stway.sy, stway.up, stway.isladder,
&(stway.tolev));
}

View File

@@ -668,24 +668,24 @@ NHFILE *nhfp;
while (stway) {
if (perform_bwrite(nhfp)) {
if (stway->tolev.dnum == u.uz.dnum) {
/* make dlevel relative to current level */
stway->tolev.dlevel -= u.uz.dlevel;
}
if (nhfp->structlevel) {
if (stway->tolev.dnum == u.uz.dnum) {
/* make dlevel relative to current level */
stway->tolev.dlevel -= u.uz.dlevel;
}
bwrite(nhfp->fd, (genericptr_t) &buflen, sizeof buflen);
bwrite(nhfp->fd, (genericptr_t) stway, sizeof *stway);
if (stway->tolev.dnum == u.uz.dnum) {
/* reset staiway dlevel back to absolute */
stway->tolev.dlevel += u.uz.dlevel;
}
}
if (stway->tolev.dnum == u.uz.dnum) {
/* reset staiway dlevel back to absolute */
stway->tolev.dlevel += u.uz.dlevel;
}
}
stway = stway->next;
}
if (perform_bwrite(nhfp)) {
buflen = -1;
if (nhfp->structlevel) {
buflen = -1;
bwrite(nhfp->fd, (genericptr_t) &buflen, sizeof buflen);
}
}