diff --git a/include/QF/bspfile.h b/include/QF/bspfile.h index 7ee58f496..e5226338f 100644 --- a/include/QF/bspfile.h +++ b/include/QF/bspfile.h @@ -279,6 +279,7 @@ typedef struct bsp_s { int *surfedges; } bsp_t; +bsp_t *LoadBSPMem (void *mem, int size); bsp_t *LoadBSPFile (QFile *file, int size); void WriteBSPFile (bsp_t *bsp, QFile *file); bsp_t *BSP_New (void); diff --git a/libs/util/bspfile.c b/libs/util/bspfile.c index 79c14423e..ead1c843d 100644 --- a/libs/util/bspfile.c +++ b/libs/util/bspfile.c @@ -176,14 +176,11 @@ swap_bsp (bsp_t *bsp, int todisk) } bsp_t * -LoadBSPFile (QFile *file, int size) +LoadBSPMem (void *mem, int size) { - dheader_t *header; + dheader_t *header = mem; bsp_t *bsp; - header = malloc (size); - Qread (file, header, size); - if (LittleLong (header->version) != BSPVERSION) Sys_Error ("version %i, not %i", LittleLong (header->version), BSPVERSION); @@ -232,12 +229,24 @@ do { \ SET_LUMP (LUMP_ENTITIES, entdata); SET_LUMP (LUMP_TEXTURES, texdata); - free (header); swap_bsp (bsp, 0); return bsp; } +bsp_t * +LoadBSPFile (QFile *file, int size) +{ + void *buf; + bsp_t *bsp; + + buf = malloc (size); + Qread (file, buf, size); + bsp = LoadBSPMem (buf, size); + free (buf); + return bsp; +} + /* WriteBSPFile