[Bf-blender-cvs] [5b0cb5bbbe7] soc-2020-io-performance: Fix tessellate crash due to wrong Vector size.

Ankit Meel noreply at git.blender.org
Fri Aug 21 12:46:03 CEST 2020


Commit: 5b0cb5bbbe78ea308390e6e33fd9ea80ca524a4f
Author: Ankit Meel
Date:   Fri Aug 21 15:46:44 2020 +0530
Branches: soc-2020-io-performance
https://developer.blender.org/rB5b0cb5bbbe78ea308390e6e33fd9ea80ca524a4f

Fix tessellate crash due to wrong Vector size.

Also fix crash due to out of bound vertex indices.

===================================================================

M	source/blender/io/wavefront_obj/intern/mesh_utils.cc

===================================================================

diff --git a/source/blender/io/wavefront_obj/intern/mesh_utils.cc b/source/blender/io/wavefront_obj/intern/mesh_utils.cc
index 5176553d873..52bbd56927a 100644
--- a/source/blender/io/wavefront_obj/intern/mesh_utils.cc
+++ b/source/blender/io/wavefront_obj/intern/mesh_utils.cc
@@ -133,13 +133,13 @@ Vector<Vector<int>> ngon_tessellate(Span<float3> vertex_coords, Span<int> face_v
   Vector<vert_treplet> verts;
   verts.reserve(face_vertex_indices.size());
 
-  for (int i = 0; i < verts.size(); i++) {
-    verts.append_unchecked({vertex_coords[i], i});
+  for (int i = 0; i < face_vertex_indices.size(); i++) {
+    verts.append({vertex_coords[face_vertex_indices[i]], i});
   }
 
   Vector<Array<int, 2>> edges;
   for (int i = 0; i < face_vertex_indices.size(); i++) {
-    edges[i] = {i, i - 1};
+    edges.append({i, i - 1});
   }
   edges[0] = {0, static_cast<int>(face_vertex_indices.size() - 1)};
 
@@ -250,7 +250,7 @@ Vector<Vector<int>> ngon_tessellate(Span<float3> vertex_coords, Span<int> face_v
 
   if (fill_indices.is_empty()) {
     std::cerr << "Warning: could not scanfill, fallback on triangle fan" << std::endl;
-    for (int i = 0; i < face_vertex_indices.size(); i++) {
+    for (int i = 2; i < face_vertex_indices.size(); i++) {
       fill_indices.append({0, i - 1, i});
     }
   }



More information about the Bf-blender-cvs mailing list