diff --git a/src/glview/VBORenderer.cc b/src/glview/VBORenderer.cc index 7e29f3e1887..83ffa382c72 100644 --- a/src/glview/VBORenderer.cc +++ b/src/glview/VBORenderer.cc @@ -275,7 +275,12 @@ void VBORenderer::create_surface(const PolySet& ps, VertexArray& vertex_array, for (int i = 0, n = ps.indices.size(); i < n; i++) { const auto& poly = ps.indices[i]; const auto color_index = has_colors && i < ps.color_indices.size() ? ps.color_indices[i] : -1; - const auto& color = !force_default_color && color_index >= 0 && color_index < ps.colors.size() ? ps.colors[color_index] : default_color; + const auto& color = + !force_default_color && + color_index >= 0 && + color_index < ps.colors.size() && + ps.colors[color_index].isValid() ? + ps.colors[color_index] : default_color; if (poly.size() == 3) { Vector3d p0 = uniqueMultiply(vert_mult_map, ps.vertices[poly.at(0)], m); Vector3d p1 = uniqueMultiply(vert_mult_map, ps.vertices[poly.at(1)], m); diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt index 4041a09a1d1..4cd09a575ec 100644 --- a/tests/CMakeLists.txt +++ b/tests/CMakeLists.txt @@ -857,6 +857,7 @@ list(APPEND SCADFILES_WITH_COLOR ${EXAMPLES_DIR}/Basics/rotate_extrude.scad ${EXAMPLES_DIR}/Old/example017.scad + ${TEST_SCAD_DIR}/3D/issues/issue5216.scad ${TEST_SCAD_DIR}/3D/issues/issue5217.scad #${TEST_SCAD_DIR}/bugs/issue1000.scad diff --git a/tests/data/scad/3D/issues/issue5216.scad b/tests/data/scad/3D/issues/issue5216.scad new file mode 100644 index 00000000000..5f3b062430f --- /dev/null +++ b/tests/data/scad/3D/issues/issue5216.scad @@ -0,0 +1 @@ +color() cube(); diff --git a/tests/regression/previewtest/issue5216-expected.png b/tests/regression/previewtest/issue5216-expected.png new file mode 100644 index 00000000000..9f12cf8f6b0 Binary files /dev/null and b/tests/regression/previewtest/issue5216-expected.png differ diff --git a/tests/regression/rendermanifoldtest-different/issue5216-expected.png b/tests/regression/rendermanifoldtest-different/issue5216-expected.png new file mode 100644 index 00000000000..9f12cf8f6b0 Binary files /dev/null and b/tests/regression/rendermanifoldtest-different/issue5216-expected.png differ diff --git a/tests/regression/rendertest/issue5216-expected.png b/tests/regression/rendertest/issue5216-expected.png new file mode 100644 index 00000000000..9f12cf8f6b0 Binary files /dev/null and b/tests/regression/rendertest/issue5216-expected.png differ diff --git a/tests/regression/throwntogethertest/issue5216-expected.png b/tests/regression/throwntogethertest/issue5216-expected.png new file mode 100644 index 00000000000..01aa0d6b49a Binary files /dev/null and b/tests/regression/throwntogethertest/issue5216-expected.png differ