From: nhmall Date: Thu, 3 Dec 2020 15:05:31 +0000 (-0500) Subject: stairway save/restore bit X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=f5437636959d09d5dfdf02976442ec9edbfcbd47;p=nethack stairway save/restore bit The logic surrounding stairway saves and restores should not be within a block reserved for deliminating external file structure. --- diff --git a/src/restore.c b/src/restore.c index e28648769..528d76a04 100644 --- a/src/restore.c +++ b/src/restore.c @@ -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)); } diff --git a/src/save.c b/src/save.c index bc8def125..f463e8939 100644 --- a/src/save.c +++ b/src/save.c @@ -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); } }