diff options
author | RĂ©mi Verschelde <rverschelde@gmail.com> | 2020-01-07 09:37:01 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-01-07 09:37:01 +0100 |
commit | 96fdb48edd49966485cc344a01eaaa74a2999d42 (patch) | |
tree | d08dcd71084a8236396ee5c1884b77ee85af84ee /scene/resources/mesh.cpp | |
parent | 84b5ac8640d4e22627e5c7f27abcc19fadbf1724 (diff) | |
parent | 3df9d187a32c7d1d500812b295e01c8f14eb50de (diff) |
Merge pull request #34256 from timothyqiu/return-array-32988
Fixes crash when using Mesh::create_outline and Mesh::create_convex_shape
Diffstat (limited to 'scene/resources/mesh.cpp')
-rw-r--r-- | scene/resources/mesh.cpp | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/scene/resources/mesh.cpp b/scene/resources/mesh.cpp index 13721191c0..0599920303 100644 --- a/scene/resources/mesh.cpp +++ b/scene/resources/mesh.cpp @@ -75,6 +75,7 @@ Ref<TriangleMesh> Mesh::generate_triangle_mesh() const { continue; Array a = surface_get_arrays(i); + ERR_FAIL_COND_V(a.empty(), Ref<TriangleMesh>()); int vc = surface_get_array_len(i); PoolVector<Vector3> vertices = a[ARRAY_VERTEX]; @@ -234,6 +235,7 @@ Ref<Shape> Mesh::create_convex_shape() const { for (int i = 0; i < get_surface_count(); i++) { Array a = surface_get_arrays(i); + ERR_FAIL_COND_V(a.empty(), Ref<ConvexPolygonShape>()); PoolVector<Vector3> v = a[ARRAY_VERTEX]; vertices.append_array(v); } @@ -273,6 +275,7 @@ Ref<Mesh> Mesh::create_outline(float p_margin) const { continue; Array a = surface_get_arrays(i); + ERR_FAIL_COND_V(a.empty(), Ref<ArrayMesh>()); if (i == 0) { arrays = a; @@ -378,6 +381,7 @@ Ref<Mesh> Mesh::create_outline(float p_margin) const { PoolVector<Vector3>::Write r = vertices.write(); if (indices.size()) { + ERR_FAIL_COND_V(indices.size() % 3 != 0, Ref<ArrayMesh>()); vc = indices.size(); ir = indices.write(); has_indices = true; |