diff --git a/libs/assimp/code/AssetLib/ASE/ASEParser.cpp b/libs/assimp/code/AssetLib/ASE/ASEParser.cpp index a2884b8d..8d074da1 100644 --- a/libs/assimp/code/AssetLib/ASE/ASEParser.cpp +++ b/libs/assimp/code/AssetLib/ASE/ASEParser.cpp @@ -482,6 +482,13 @@ void Parser::ParseLV1MaterialListBlock() { continue; } if (TokenMatch(filePtr, "MATERIAL", 8)) { + // ensure we have at least one material allocated + if (iMaterialCount == 0) { + LogWarning("*MATERIAL_COUNT unspecified or 0"); + iMaterialCount = 1; + m_vMaterials.resize(iOldMaterialCount + iMaterialCount, Material("INVALID")); + } + unsigned int iIndex = 0; ParseLV4MeshLong(iIndex); @@ -634,6 +641,12 @@ void Parser::ParseLV2MaterialBlock(ASE::Material &mat) { } // submaterial chunks if (TokenMatch(filePtr, "SUBMATERIAL", 11)) { + // ensure we have at least one material allocated + if (iNumSubMaterials == 0) { + LogWarning("*NUMSUBMTLS unspecified or 0"); + iNumSubMaterials = 1; + mat.avSubMaterials.resize(iNumSubMaterials, Material("INVALID SUBMATERIAL")); + } unsigned int iIndex = 0; ParseLV4MeshLong(iIndex);