diff --git a/src/Magnum/MeshTools/GenerateNormals.cpp b/src/Magnum/MeshTools/GenerateNormals.cpp index 76d9ef748..de924b808 100644 --- a/src/Magnum/MeshTools/GenerateNormals.cpp +++ b/src/Magnum/MeshTools/GenerateNormals.cpp @@ -111,7 +111,7 @@ template inline void generateSmoothNormalsIntoImplementation(const Cont Containers::arrayCast(normals); for(UnsignedInt& i: triangleCount) i = 0; for(const T index: indices) { - CORRADE_ASSERT(index < positions.size(), "MeshTools::generateSmoothNormals(): index" << index << "out of bounds for" << positions.size() << "elements", ); + CORRADE_ASSERT(index < positions.size(), "MeshTools::generateSmoothNormalsInto(): index" << index << "out of bounds for" << positions.size() << "elements", ); ++triangleCount[index]; } diff --git a/src/Magnum/MeshTools/Test/GenerateNormalsTest.cpp b/src/Magnum/MeshTools/Test/GenerateNormalsTest.cpp index 22e36c3bb..9149bb426 100644 --- a/src/Magnum/MeshTools/Test/GenerateNormalsTest.cpp +++ b/src/Magnum/MeshTools/Test/GenerateNormalsTest.cpp @@ -58,6 +58,7 @@ struct GenerateNormalsTest: TestSuite::Tester { void smoothZeroAreaTriangle(); void smoothNanPosition(); void smoothWrongCount(); + void smoothOutOfBounds(); void smoothIntoWrongSize(); void benchmarkFlat(); @@ -81,6 +82,7 @@ GenerateNormalsTest::GenerateNormalsTest() { &GenerateNormalsTest::smoothZeroAreaTriangle, &GenerateNormalsTest::smoothNanPosition, &GenerateNormalsTest::smoothWrongCount, + &GenerateNormalsTest::smoothOutOfBounds, &GenerateNormalsTest::smoothIntoWrongSize}); addBenchmarks({&GenerateNormalsTest::benchmarkFlat, @@ -386,6 +388,16 @@ void GenerateNormalsTest::smoothWrongCount() { CORRADE_COMPARE(out.str(), "MeshTools::generateSmoothNormalsInto(): index count not divisible by 3\n"); } +void GenerateNormalsTest::smoothOutOfBounds() { + std::stringstream out; + Error redirectError{&out}; + + const Vector3 positions[2]; + const UnsignedInt indices[] { 0, 1, 2 }; + generateSmoothNormals(indices, positions); + CORRADE_COMPARE(out.str(), "MeshTools::generateSmoothNormalsInto(): index 2 out of bounds for 2 elements\n"); +} + void GenerateNormalsTest::smoothIntoWrongSize() { std::stringstream out; Error redirectError{&out};