]> de.git.xonotic.org Git - xonotic/darkplaces.git/commitdiff
modified Mod_ValidateElements to fix broken elements rather than crashing later
authorhavoc <havoc@d7cf8633-e32d-0410-b094-e92efae38249>
Tue, 30 Aug 2005 08:53:01 +0000 (08:53 +0000)
committerhavoc <havoc@d7cf8633-e32d-0410-b094-e92efae38249>
Tue, 30 Aug 2005 08:53:01 +0000 (08:53 +0000)
git-svn-id: svn://svn.icculus.org/twilight/trunk/darkplaces@5672 d7cf8633-e32d-0410-b094-e92efae38249

model_shared.c
model_shared.h

index ab7de28c4d95f1a99042852480711dfc723ce30f..e99affc5473efdc385f5f1962a166e5789b9a682 100644 (file)
@@ -480,12 +480,21 @@ void Mod_BuildTriangleNeighbors(int *neighbors, const int *elements, int numtria
 }
 #endif
 
 }
 #endif
 
-void Mod_ValidateElements(const int *elements, int numtriangles, int numverts, const char *filename, int fileline)
+void Mod_ValidateElements(int *elements, int numtriangles, int numverts, const char *filename, int fileline)
 {
 {
-       int i;
+       int i, warned = false;
        for (i = 0;i < numtriangles * 3;i++)
        for (i = 0;i < numtriangles * 3;i++)
+       {
                if ((unsigned int)elements[i] >= (unsigned int)numverts)
                if ((unsigned int)elements[i] >= (unsigned int)numverts)
-                       Con_Printf("Mod_ValidateElements: out of bounds element detected at %s:%d\n", filename, fileline);
+               {
+                       if (!warned)
+                       {
+                               warned = true;
+                               Con_Printf("Mod_ValidateElements: out of bounds elements detected at %s:%d\n", filename, fileline);
+                       }
+                       elements[i] = 0;
+               }
+       }
 }
 
 // warning: this is an expensive function!
 }
 
 // warning: this is an expensive function!
index 6cfc51042cf0f17c0e04918d1fec70acda3dea3b..cf771ed11ffc180d26d84913ab48c347b2b2aaa7 100644 (file)
@@ -559,7 +559,7 @@ extern char loadname[32];   // for hunk tags
 
 int Mod_BuildVertexRemapTableFromElements(int numelements, const int *elements, int numvertices, int *remapvertices);
 void Mod_BuildTriangleNeighbors(int *neighbors, const int *elements, int numtriangles);
 
 int Mod_BuildVertexRemapTableFromElements(int numelements, const int *elements, int numvertices, int *remapvertices);
 void Mod_BuildTriangleNeighbors(int *neighbors, const int *elements, int numtriangles);
-void Mod_ValidateElements(const int *elements, int numtriangles, int numverts, const char *filename, int fileline);
+void Mod_ValidateElements(int *elements, int numtriangles, int numverts, const char *filename, int fileline);
 void Mod_BuildNormals(int firstvertex, int numvertices, int numtriangles, const float *vertex3f, const int *elements, float *normal3f, qboolean areaweighting);
 void Mod_BuildTextureVectorsAndNormals(int firstvertex, int numvertices, int numtriangles, const float *vertex, const float *texcoord, const int *elements, float *svectors, float *tvectors, float *normals, qboolean areaweighting);
 
 void Mod_BuildNormals(int firstvertex, int numvertices, int numtriangles, const float *vertex3f, const int *elements, float *normal3f, qboolean areaweighting);
 void Mod_BuildTextureVectorsAndNormals(int firstvertex, int numvertices, int numtriangles, const float *vertex, const float *texcoord, const int *elements, float *svectors, float *tvectors, float *normals, qboolean areaweighting);