avoid alloc(0), read(fd,NULL,0), write(fd,NULL,0)
This commit is contained in:
+4
-2
@@ -1060,8 +1060,10 @@ getlev(NHFILE *nhfp, int pid, xint8 lev)
|
|||||||
if (gd.doors)
|
if (gd.doors)
|
||||||
free(gd.doors);
|
free(gd.doors);
|
||||||
Mread(nhfp->fd, &gd.doors_alloc, sizeof gd.doors_alloc);
|
Mread(nhfp->fd, &gd.doors_alloc, sizeof gd.doors_alloc);
|
||||||
gd.doors = (coord *) alloc(gd.doors_alloc * sizeof (coord));
|
if (gd.doors_alloc) { /* avoid pointless alloc(0) */
|
||||||
Mread(nhfp->fd, gd.doors, gd.doors_alloc * sizeof (coord));
|
gd.doors = (coord *) alloc(gd.doors_alloc * sizeof (coord));
|
||||||
|
Mread(nhfp->fd, gd.doors, gd.doors_alloc * sizeof (coord));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
rest_rooms(nhfp); /* No joke :-) */
|
rest_rooms(nhfp); /* No joke :-) */
|
||||||
if (gn.nroom)
|
if (gn.nroom)
|
||||||
|
|||||||
+5
-1
@@ -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) &gd.dndest, sizeof (dest_area));
|
||||||
bwrite(nhfp->fd, (genericptr_t) &gl.level.flags, sizeof gl.level.flags);
|
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_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 */
|
save_rooms(nhfp); /* no dynamic memory to reclaim */
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user