From 615ffdf93ffdf088939541787f3ab526c6b4182b Mon Sep 17 00:00:00 2001 From: Max Vollmer Date: Thu, 10 Sep 2020 10:47:58 +0100 Subject: [PATCH] What: Throw instead of assert when input file is invalid. Why: Assimp shouldn't crash on invalid files. Asserts are disabled on Release builds. --- code/AssetLib/glTF2/glTF2Asset.inl | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/code/AssetLib/glTF2/glTF2Asset.inl b/code/AssetLib/glTF2/glTF2Asset.inl index 2dfe2f41e..ef39d6a6b 100644 --- a/code/AssetLib/glTF2/glTF2Asset.inl +++ b/code/AssetLib/glTF2/glTF2Asset.inl @@ -731,8 +731,14 @@ void Accessor::ExtractData(T *&outData) { const size_t stride = bufferView && bufferView->byteStride ? bufferView->byteStride : elemSize; const size_t targetElemSize = sizeof(T); - ai_assert(elemSize <= targetElemSize); - ai_assert(count * stride <= (bufferView ? bufferView->byteLength : sparse->data.size())); + + if (elemSize > targetElemSize) { + throw DeadlyImportError("GLTF: elemSize > targetElemSize"); + } + + if (count*stride > (bufferView ? bufferView->byteLength : sparse->data.size())) { + throw DeadlyImportError("GLTF: count*stride out of range"); + } outData = new T[count]; if (stride == elemSize && targetElemSize == elemSize) {