avoid alloc(0), read(fd,NULL,0), write(fd,NULL,0)
This commit is contained in:
@@ -1060,8 +1060,10 @@ getlev(NHFILE *nhfp, int pid, xint8 lev)
|
||||
if (gd.doors)
|
||||
free(gd.doors);
|
||||
Mread(nhfp->fd, &gd.doors_alloc, sizeof gd.doors_alloc);
|
||||
gd.doors = (coord *) alloc(gd.doors_alloc * sizeof (coord));
|
||||
Mread(nhfp->fd, gd.doors, gd.doors_alloc * sizeof (coord));
|
||||
if (gd.doors_alloc) { /* avoid pointless alloc(0) */
|
||||
gd.doors = (coord *) alloc(gd.doors_alloc * sizeof (coord));
|
||||
Mread(nhfp->fd, gd.doors, gd.doors_alloc * sizeof (coord));
|
||||
}
|
||||
}
|
||||
rest_rooms(nhfp); /* No joke :-) */
|
||||
if (gn.nroom)
|
||||
|
||||
@@ -533,7 +533,11 @@ savelev_core(NHFILE *nhfp, xint8 lev)
|
||||
bwrite(nhfp->fd, (genericptr_t) &gd.dndest, sizeof (dest_area));
|
||||
bwrite(nhfp->fd, (genericptr_t) &gl.level.flags, sizeof gl.level.flags);
|
||||
bwrite(nhfp->fd, (genericptr_t) &gd.doors_alloc, sizeof gd.doors_alloc);
|
||||
bwrite(nhfp->fd, (genericptr_t) gd.doors, gd.doors_alloc * sizeof (coord));
|
||||
/* don't rely on underlying write() behavior to write
|
||||
* nothing if count arg is 0, just skip it */
|
||||
if (gd.doors_alloc)
|
||||
bwrite(nhfp->fd, (genericptr_t) gd.doors,
|
||||
gd.doors_alloc * sizeof (coord));
|
||||
}
|
||||
save_rooms(nhfp); /* no dynamic memory to reclaim */
|
||||
|
||||
|
||||
Reference in New Issue
Block a user