fix multiple bugs with the limit extension

git-svn-id: svn://svn.icculus.org/netradiant/trunk@191 61c419a2-8eb2-4b30-bcec-8cead039b335
This commit is contained in:
divverent 2009-02-14 18:14:30 +00:00
parent 72f386416f
commit e7f13faa4b
3 changed files with 10 additions and 7 deletions

View File

@ -865,9 +865,9 @@ static int CompareSurfaceInfo( const void *a, const void *b )
bInfo = &surfaceInfos[ *((int*) b) ]; bInfo = &surfaceInfos[ *((int*) b) ];
/* model first */ /* model first */
if( aInfo->model < bInfo->model ) if( aInfo->modelindex < bInfo->modelindex )
return 1; return 1;
else if( aInfo->model > bInfo->model ) else if( aInfo->modelindex > bInfo->modelindex )
return -1; return -1;
/* then lightmap status */ /* then lightmap status */
@ -997,7 +997,7 @@ void SetupSurfaceLightmaps( void )
VectorClear( entityOrigin ); VectorClear( entityOrigin );
/* basic setup */ /* basic setup */
info->model = model; info->modelindex = i;
info->lm = NULL; info->lm = NULL;
info->plane = NULL; info->plane = NULL;
info->firstSurfaceCluster = numSurfaceClusters; info->firstSurfaceCluster = numSurfaceClusters;

View File

@ -1421,7 +1421,7 @@ rawGridPoint_t;
typedef struct surfaceInfo_s typedef struct surfaceInfo_s
{ {
bspModel_t *model; int modelindex;
shaderInfo_t *si; shaderInfo_t *si;
rawLightmap_t *lm; rawLightmap_t *lm;
int parentSurfaceNum, childSurfaceNum; int parentSurfaceNum, childSurfaceNum;
@ -2328,7 +2328,7 @@ Q_EXTERN int* bspLeafSurfaces Q_ASSIGN(NULL);
Q_EXTERN int numBSPLeafBrushes Q_ASSIGN( 0 ); Q_EXTERN int numBSPLeafBrushes Q_ASSIGN( 0 );
Q_EXTERN int allocatedBSPLeafBrushes Q_ASSIGN( 0 ); Q_EXTERN int allocatedBSPLeafBrushes Q_ASSIGN( 0 );
Q_EXTERN int* bspLeafBrushes Q_ASSIGN(0); Q_EXTERN int* bspLeafBrushes Q_ASSIGN(NULL);
Q_EXTERN int numBSPBrushes Q_ASSIGN( 0 ); Q_EXTERN int numBSPBrushes Q_ASSIGN( 0 );
Q_EXTERN int allocatedBSPBrushes Q_ASSIGN( 0 ); Q_EXTERN int allocatedBSPBrushes Q_ASSIGN( 0 );

View File

@ -199,7 +199,7 @@ recursively emit the bsp nodes
int EmitDrawNode_r( node_t *node ) int EmitDrawNode_r( node_t *node )
{ {
bspNode_t *n; bspNode_t *n;
int i; int i, n0;
/* check for leafnode */ /* check for leafnode */
@ -211,7 +211,8 @@ int EmitDrawNode_r( node_t *node )
/* emit a node */ /* emit a node */
AUTOEXPAND_BY_REALLOC_BSP(Nodes, 1024); AUTOEXPAND_BY_REALLOC_BSP(Nodes, 1024);
n = &bspNodes[ numBSPNodes ]; n0 = numBSPNodes;
n = &bspNodes[ n0 ];
numBSPNodes++; numBSPNodes++;
VectorCopy (node->mins, n->mins); VectorCopy (node->mins, n->mins);
@ -235,6 +236,8 @@ int EmitDrawNode_r( node_t *node )
{ {
n->children[i] = numBSPNodes; n->children[i] = numBSPNodes;
EmitDrawNode_r (node->children[i]); EmitDrawNode_r (node->children[i]);
// n may have become invalid here, so...
n = &bspNodes[ n0 ];
} }
} }