diff --git a/src/OpenMesh/Core/IO/reader/OBJReader.cc b/src/OpenMesh/Core/IO/reader/OBJReader.cc index 2c7036c7e585cbb83535848e6b7c961f4caefb70..3c5a3d4dc02c4c312b30f9841b202d507541d476 100644 --- a/src/OpenMesh/Core/IO/reader/OBJReader.cc +++ b/src/OpenMesh/Core/IO/reader/OBJReader.cc @@ -597,8 +597,14 @@ read(std::istream& _in, BaseImporter& _bi, Options& _opt) // Obj counts from 1 and not zero .. array counts from zero therefore -1 vhandles.push_back(VertexHandle(value-1)); faceVertices.push_back(VertexHandle(value-1)); - if (fileOptions.vertex_has_color() ) - _bi.set_color(vhandles.back(), colors[value-1]); + if (fileOptions.vertex_has_color()) { + if ((unsigned int)(value - 1) < colors.size()) { + _bi.set_color(vhandles.back(), colors[value - 1]); + } + else { + omerr() << "Error setting vertex color" << std::endl; + } + } break; case 1: // texture coord @@ -648,9 +654,13 @@ read(std::istream& _in, BaseImporter& _bi, Options& _opt) // Obj counts from 1 and not zero .. array counts from zero therefore -1 if (fileOptions.vertex_has_normal() ) { - assert(!vhandles.empty()); - assert((unsigned int)(value-1) < normals.size()); - _bi.set_normal(vhandles.back(), normals[value-1]); + assert(!vhandles.empty()); + if ((unsigned int)(value - 1) < normals.size()) { + _bi.set_normal(vhandles.back(), normals[value - 1]); + } + else { + omerr() << "Error setting vertex normal" << std::endl; + } } break; }