Explorar o código

HMP: Fix override during copying position data

- Fix override
- closes https://github.com/assimp/assimp/issues/4235
Kim Kulling %!s(int64=3) %!d(string=hai) anos
pai
achega
50b00d33b5
Modificáronse 1 ficheiros con 5 adicións e 1 borrados
  1. 5 1
      code/AssetLib/HMP/HMPLoader.cpp

+ 5 - 1
code/AssetLib/HMP/HMPLoader.cpp

@@ -373,12 +373,16 @@ void HMPImporter::CreateOutputFaceList(unsigned int width, unsigned int height)
     aiVector3D *pcUVOut(pcUVs);
     aiVector3D *pcUVOut(pcUVs);
 
 
     // Build the terrain square
     // Build the terrain square
+    const unsigned int upperBound = pcMesh->mNumVertices;
     unsigned int iCurrent = 0;
     unsigned int iCurrent = 0;
     for (unsigned int y = 0; y < height - 1; ++y) {
     for (unsigned int y = 0; y < height - 1; ++y) {
         for (unsigned int x = 0; x < width - 1; ++x, ++pcFaceOut) {
         for (unsigned int x = 0; x < width - 1; ++x, ++pcFaceOut) {
             pcFaceOut->mNumIndices = 4;
             pcFaceOut->mNumIndices = 4;
             pcFaceOut->mIndices = new unsigned int[4];
             pcFaceOut->mIndices = new unsigned int[4];
-
+            if ((y * width + x + 1) >= upperBound){
+                continue;
+            }
+            ai_assert(upperBound
             *pcVertOut++ = pcMesh->mVertices[y * width + x];
             *pcVertOut++ = pcMesh->mVertices[y * width + x];
             *pcVertOut++ = pcMesh->mVertices[(y + 1) * width + x];
             *pcVertOut++ = pcMesh->mVertices[(y + 1) * width + x];
             *pcVertOut++ = pcMesh->mVertices[(y + 1) * width + x + 1];
             *pcVertOut++ = pcMesh->mVertices[(y + 1) * width + x + 1];