From fa65d538dd6239e5afe3759e2822dba5af5249b6 Mon Sep 17 00:00:00 2001 From: Kim Kulling Date: Fri, 10 Dec 2021 14:32:44 +0100 Subject: [PATCH] Update HMPLoader.cpp - Fix possible division by zero - closes https://github.com/assimp/assimp/issues/4235 --- code/AssetLib/HMP/HMPLoader.cpp | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/code/AssetLib/HMP/HMPLoader.cpp b/code/AssetLib/HMP/HMPLoader.cpp index 661e4d1b2..0bc152680 100644 --- a/code/AssetLib/HMP/HMPLoader.cpp +++ b/code/AssetLib/HMP/HMPLoader.cpp @@ -473,16 +473,22 @@ void HMPImporter::ReadFirstSkin(unsigned int iNumSkins, const unsigned char *szC // ------------------------------------------------------------------------------------------------ // Generate proepr texture coords -void HMPImporter::GenerateTextureCoords( - const unsigned int width, const unsigned int height) { +void HMPImporter::GenerateTextureCoords(const unsigned int width, const unsigned int height) { ai_assert(nullptr != pScene->mMeshes); ai_assert(nullptr != pScene->mMeshes[0]); ai_assert(nullptr != pScene->mMeshes[0]->mTextureCoords[0]); aiVector3D *uv = pScene->mMeshes[0]->mTextureCoords[0]; - - const float fY = (1.0f / height) + (1.0f / height) / (height - 1); - const float fX = (1.0f / width) + (1.0f / width) / (width - 1); + if (uv == nullptr) { + return; + } + + if (height == 0.0f || width == 0.0) { + return; + } + + const float fY = (1.0f / height) + (1.0f / height) / height; + const float fX = (1.0f / width) + (1.0f / width) / width; for (unsigned int y = 0; y < height; ++y) { for (unsigned int x = 0; x < width; ++x, ++uv) {