diff options
author | Mark Riedesel <mark@klowner.com> | 2021-10-16 14:21:46 -0400 |
---|---|---|
committer | Mark Riedesel <mark@klowner.com> | 2021-10-16 20:31:20 -0400 |
commit | 5d96124af6fee0ae99ccbb0cb5f05b4550dccdb4 (patch) | |
tree | 01411e1e4767cfa38a0c6f9b1ca47c93d9ea2e37 | |
parent | a4e1a07d83a90d0af67ffe17cda4c31134e403d1 (diff) |
Add check to SurfaceTool.generate_lod(); ensure target index count between 0 and source index count. Fixes #53876
-rw-r--r-- | scene/resources/surface_tool.cpp | 2 |
1 files changed, 2 insertions, 0 deletions
diff --git a/scene/resources/surface_tool.cpp b/scene/resources/surface_tool.cpp index a8cd872408..455af8a40c 100644 --- a/scene/resources/surface_tool.cpp +++ b/scene/resources/surface_tool.cpp @@ -1174,9 +1174,11 @@ Vector<int> SurfaceTool::generate_lod(float p_threshold, int p_target_index_coun Vector<int> lod; ERR_FAIL_COND_V(simplify_func == nullptr, lod); + ERR_FAIL_COND_V(p_target_index_count < 0, lod); ERR_FAIL_COND_V(vertex_array.size() == 0, lod); ERR_FAIL_COND_V(index_array.size() == 0, lod); ERR_FAIL_COND_V(index_array.size() % 3 != 0, lod); + ERR_FAIL_COND_V(index_array.size() < (unsigned int)p_target_index_count, lod); lod.resize(index_array.size()); LocalVector<float> vertices; //uses floats |