diff --git a/code/ObjFileImporter.cpp b/code/ObjFileImporter.cpp index 4fc042966..c64518efe 100644 --- a/code/ObjFileImporter.cpp +++ b/code/ObjFileImporter.cpp @@ -244,12 +244,14 @@ void ObjFileImporter::CreateDataFromImport(const ObjFile::Model* pModel, aiScene mesh->mNumVertices = n; mesh->mVertices = new aiVector3D[n]; - memcpy_s(mesh->mVertices, n*sizeof(aiVector3D), pModel->m_Vertices.data(), pModel->m_Vertices.size()*sizeof(aiVector3D) ); + memcpy(mesh->mVertices, pModel->m_Vertices.data(), n*sizeof(aiVector3D) ); - // Allocate memory for attributes if ( !pModel->m_Normals.empty() ) { mesh->mNormals = new aiVector3D[n]; - memcpy_s(mesh->mNormals, n*sizeof(aiVector3D), pModel->m_Normals.data(), pModel->m_Normals.size()*sizeof(aiVector3D)); + if (pModel->m_Normals.size() < n) { + throw DeadlyImportError("OBJ: vertex normal index out of range"); + } + memcpy(mesh->mNormals, pModel->m_Normals.data(), n*sizeof(aiVector3D)); } if ( !pModel->m_VertexColors.empty() ){ @@ -259,7 +261,7 @@ void ObjFileImporter::CreateDataFromImport(const ObjFile::Model* pModel, aiScene const aiVector3D& color = pModel->m_VertexColors[i]; mesh->mColors[0][i] = aiColor4D(color.x, color.y, color.z, 1.0); }else { - mesh->mColors[0][i] = aiColor4D( 1.0, 1.0, 1.0, 1.0 ); // Any other ideas what to use as default color? + throw DeadlyImportError("OBJ: vertex color index out of range"); } } }