diff --git a/code/PostProcessing/TriangulateProcess.cpp b/code/PostProcessing/TriangulateProcess.cpp index ac483f215..c0ffffd6b 100644 --- a/code/PostProcessing/TriangulateProcess.cpp +++ b/code/PostProcessing/TriangulateProcess.cpp @@ -192,13 +192,13 @@ bool TriangulateProcess::TriangulateMesh( aiMesh* pMesh) { for( unsigned int a = 0; a < pMesh->mNumFaces; a++) { const aiFace& face = pMesh->mFaces[a]; - if( face.mNumIndices != 3) { bNeed = true; } } - if (!bNeed) + if (!bNeed) { return false; + } } else if (!(pMesh->mPrimitiveTypes & aiPrimitiveType_POLYGON)) { return false; @@ -213,8 +213,7 @@ bool TriangulateProcess::TriangulateMesh( aiMesh* pMesh) { get_normals = false; } if( face.mNumIndices <= 3) { - numOut++; - + ++numOut; } else { numOut += face.mNumIndices-2; max_out = std::max(max_out,face.mNumIndices); @@ -222,8 +221,11 @@ bool TriangulateProcess::TriangulateMesh( aiMesh* pMesh) { } // Just another check whether aiMesh::mPrimitiveTypes is correct - ai_assert(numOut != pMesh->mNumFaces); - + if (numOut == pMesh->mNumFaces) { + ASSIMP_LOG_ERROR( "Invalidation detected in the number of indices: does not fit to the primitive type." ); + return false; + } + aiVector3D *nor_out = nullptr; // if we don't have normals yet, but expect them to be a cheap side