diff --git a/include/QF/bspfile.h b/include/QF/bspfile.h index 0aae5bd93..070023d39 100644 --- a/include/QF/bspfile.h +++ b/include/QF/bspfile.h @@ -234,49 +234,49 @@ typedef struct { // the utilities get to be lazy and just use large static arrays extern int nummodels; -extern dmodel_t dmodels[MAX_MAP_MODELS]; +extern dmodel_t *dmodels; extern int visdatasize; -extern byte dvisdata[MAX_MAP_VISIBILITY]; +extern byte *dvisdata; extern int lightdatasize; -extern byte dlightdata[MAX_MAP_LIGHTING]; +extern byte *dlightdata; extern int texdatasize; -extern byte dtexdata[MAX_MAP_MIPTEX]; // (dmiptexlump_t) +extern byte *dtexdata; // (dmiptexlump_t) extern int entdatasize; -extern char dentdata[MAX_MAP_ENTSTRING]; +extern char *dentdata; extern int numleafs; -extern dleaf_t dleafs[MAX_MAP_LEAFS]; +extern dleaf_t *dleafs; extern int numplanes; -extern dplane_t dplanes[MAX_MAP_PLANES]; +extern dplane_t *dplanes; extern int numvertexes; -extern dvertex_t dvertexes[MAX_MAP_VERTS]; +extern dvertex_t *dvertexes; extern int numnodes; -extern dnode_t dnodes[MAX_MAP_NODES]; +extern dnode_t *dnodes; extern int numtexinfo; -extern texinfo_t texinfo[MAX_MAP_TEXINFO]; +extern texinfo_t *texinfo; extern int numfaces; -extern dface_t dfaces[MAX_MAP_FACES]; +extern dface_t *dfaces; extern int numclipnodes; -extern dclipnode_t dclipnodes[MAX_MAP_CLIPNODES]; +extern dclipnode_t *dclipnodes; extern int numedges; -extern dedge_t dedges[MAX_MAP_EDGES]; +extern dedge_t *dedges; extern int nummarksurfaces; -extern unsigned short dmarksurfaces[MAX_MAP_MARKSURFACES]; +extern unsigned short *dmarksurfaces; extern int numsurfedges; -extern int dsurfedges[MAX_MAP_SURFEDGES]; +extern int *dsurfedges; void DecompressVis (byte *in, byte *decompressed); int CompressVis (byte *vis, byte *dest); diff --git a/libs/util/bspfile.c b/libs/util/bspfile.c index 919db44f7..aa3be125b 100644 --- a/libs/util/bspfile.c +++ b/libs/util/bspfile.c @@ -50,49 +50,49 @@ static const char rcsid[] = #include "QF/sys.h" int nummodels; -dmodel_t dmodels[MAX_MAP_MODELS]; +dmodel_t *dmodels; int visdatasize; -byte dvisdata[MAX_MAP_VISIBILITY]; +byte *dvisdata; int lightdatasize; -byte dlightdata[MAX_MAP_LIGHTING]; +byte *dlightdata; int texdatasize; -byte dtexdata[MAX_MAP_MIPTEX]; // (dmiptexlump_t) +byte *dtexdata; int entdatasize; -char dentdata[MAX_MAP_ENTSTRING]; +char *dentdata; int numleafs; -dleaf_t dleafs[MAX_MAP_LEAFS]; +dleaf_t *dleafs; int numplanes; -dplane_t dplanes[MAX_MAP_PLANES]; +dplane_t *dplanes; int numvertexes; -dvertex_t dvertexes[MAX_MAP_VERTS]; +dvertex_t *dvertexes; int numnodes; -dnode_t dnodes[MAX_MAP_NODES]; +dnode_t *dnodes; int numtexinfo; -texinfo_t texinfo[MAX_MAP_TEXINFO]; +texinfo_t *texinfo; int numfaces; -dface_t dfaces[MAX_MAP_FACES]; +dface_t *dfaces; int numclipnodes; -dclipnode_t dclipnodes[MAX_MAP_CLIPNODES]; +dclipnode_t *dclipnodes; int numedges; -dedge_t dedges[MAX_MAP_EDGES]; +dedge_t *dedges; int nummarksurfaces; -unsigned short dmarksurfaces[MAX_MAP_MARKSURFACES]; +unsigned short *dmarksurfaces; int numsurfedges; -int dsurfedges[MAX_MAP_SURFEDGES]; +int *dsurfedges; dheader_t *header; dheader_t outheader; @@ -234,7 +234,7 @@ AddLump (int lumpnum, void *data, int len) } static int -CopyLump (int lump, void *dest, int size) +CopyLump (int lump, void **dest, int size) { int length, ofs; @@ -244,7 +244,10 @@ CopyLump (int lump, void *dest, int size) if (length % size) Sys_Error ("LoadBSPFile: odd lump size"); - memcpy (dest, (byte *) header + ofs, length); + *dest = malloc (length); + if (!dest) + Sys_Error ("LoadBSPFile: out of memory"); + memcpy (*dest, (byte *) header + ofs, length); return length / size; } @@ -265,25 +268,25 @@ LoadBSPFile (const char *filename) if (header->version != BSPVERSION) Sys_Error ("%s is version %i, not %i", filename, i, BSPVERSION); - - nummodels = CopyLump (LUMP_MODELS, dmodels, sizeof (dmodel_t)); - numvertexes = CopyLump (LUMP_VERTEXES, dvertexes, sizeof (dvertex_t)); - numplanes = CopyLump (LUMP_PLANES, dplanes, sizeof (dplane_t)); - numleafs = CopyLump (LUMP_LEAFS, dleafs, sizeof (dleaf_t)); - numnodes = CopyLump (LUMP_NODES, dnodes, sizeof (dnode_t)); - numtexinfo = CopyLump (LUMP_TEXINFO, texinfo, sizeof (texinfo_t)); - numclipnodes = CopyLump (LUMP_CLIPNODES, dclipnodes, sizeof (dclipnode_t)); - numfaces = CopyLump (LUMP_FACES, dfaces, sizeof (dface_t)); - nummarksurfaces = CopyLump (LUMP_MARKSURFACES, dmarksurfaces, +//FIXME casting to (void**) isn't really portable :( + nummodels = CopyLump (LUMP_MODELS, (void **)&dmodels, sizeof (dmodel_t)); + numvertexes = CopyLump (LUMP_VERTEXES, (void **)&dvertexes, sizeof (dvertex_t)); + numplanes = CopyLump (LUMP_PLANES, (void **)&dplanes, sizeof (dplane_t)); + numleafs = CopyLump (LUMP_LEAFS, (void **)&dleafs, sizeof (dleaf_t)); + numnodes = CopyLump (LUMP_NODES, (void **)&dnodes, sizeof (dnode_t)); + numtexinfo = CopyLump (LUMP_TEXINFO, (void **)&texinfo, sizeof (texinfo_t)); + numclipnodes = CopyLump (LUMP_CLIPNODES, (void **)&dclipnodes, sizeof (dclipnode_t)); + numfaces = CopyLump (LUMP_FACES, (void **)&dfaces, sizeof (dface_t)); + nummarksurfaces = CopyLump (LUMP_MARKSURFACES, (void **)&dmarksurfaces, sizeof (dmarksurfaces[0])); - numsurfedges = CopyLump (LUMP_SURFEDGES, dsurfedges, + numsurfedges = CopyLump (LUMP_SURFEDGES, (void **)&dsurfedges, sizeof (dsurfedges[0])); - numedges = CopyLump (LUMP_EDGES, dedges, sizeof (dedge_t)); + numedges = CopyLump (LUMP_EDGES, (void **)&dedges, sizeof (dedge_t)); - texdatasize = CopyLump (LUMP_TEXTURES, dtexdata, 1); - visdatasize = CopyLump (LUMP_VISIBILITY, dvisdata, 1); - lightdatasize = CopyLump (LUMP_LIGHTING, dlightdata, 1); - entdatasize = CopyLump (LUMP_ENTITIES, dentdata, 1); + texdatasize = CopyLump (LUMP_TEXTURES, (void **)&dtexdata, 1); + visdatasize = CopyLump (LUMP_VISIBILITY, (void **)&dvisdata, 1); + lightdatasize = CopyLump (LUMP_LIGHTING, (void **)&dlightdata, 1); + entdatasize = CopyLump (LUMP_ENTITIES, (void **)&dentdata, 1); free (header); diff --git a/tools/qfvis/source/qfvis.c b/tools/qfvis/source/qfvis.c index 3f1775e1d..93fae9d7d 100644 --- a/tools/qfvis/source/qfvis.c +++ b/tools/qfvis/source/qfvis.c @@ -370,7 +370,7 @@ void *LeafThread (void *thread) PortalFlow (portal); - if (options.verbosity >= 0) + if (options.verbosity > 0) printf ("portal:%4i mightsee:%4i cansee:%4i\n", (int) (portal - portals), portal->nummightsee, @@ -449,7 +449,7 @@ LeafFlow (int leafnum) numvis++; // compress the bit string - if (options.verbosity >= 0) + if (options.verbosity > 0) printf ("leaf %4i : %4i visible\n", leafnum, numvis); totalvis += numvis; @@ -524,7 +524,7 @@ CalcPortalVis (void) LeafThread (0); #endif - if (options.verbosity >= 0) { + if (options.verbosity > 0) { printf ("portalcheck: %i portaltest: %i portalpass: %i\n", c_portalcheck, c_portaltest, c_portalpass); printf ("c_vistest: %i c_mighttest: %i\n", c_vistest, c_mighttest);