Fixes issues our internal compliance and code quality tool found:

* Adds nullptr checks and asserts to protect certain code paths
* Fixes wrong integer type in a printf call
* Adds const to const values
* Prevents integer overflow with explicit casts
This commit is contained in:
Max Vollmer (Microsoft Havok)
2021-08-30 14:59:17 +01:00
parent 5e86fead8e
commit 51f294c587
7 changed files with 19 additions and 8 deletions

View File

@@ -555,17 +555,23 @@ uint32_t Assimp::ComputeMaterialHash(const aiMaterial *mat, bool includeMatName
}
// ------------------------------------------------------------------------------------------------
void aiMaterial::CopyPropertyList(aiMaterial *pcDest,
void aiMaterial::CopyPropertyList(aiMaterial *const pcDest,
const aiMaterial *pcSrc) {
ai_assert(nullptr != pcDest);
ai_assert(nullptr != pcSrc);
ai_assert(pcDest->mNumProperties <= pcDest->mNumAllocated);
ai_assert(pcSrc->mNumProperties <= pcSrc->mNumAllocated);
unsigned int iOldNum = pcDest->mNumProperties;
const unsigned int iOldNum = pcDest->mNumProperties;
pcDest->mNumAllocated += pcSrc->mNumAllocated;
pcDest->mNumProperties += pcSrc->mNumProperties;
const unsigned int numAllocated = pcDest->mNumAllocated;
aiMaterialProperty **pcOld = pcDest->mProperties;
pcDest->mProperties = new aiMaterialProperty *[pcDest->mNumAllocated];
pcDest->mProperties = new aiMaterialProperty *[numAllocated];
ai_assert(!iOldNum || pcOld);
ai_assert(iOldNum < numAllocated);
if (iOldNum && pcOld) {
for (unsigned int i = 0; i < iOldNum; ++i) {