[Bf-blender-cvs] [31ccf79011b] blender-v3.4-release: Fix T102336: dynamic topology crash

Joseph Eagar noreply at git.blender.org
Tue Dec 6 18:04:46 CET 2022


Commit: 31ccf79011bd537c2dfbe041a76267c7fe46d4c1
Author: Joseph Eagar
Date:   Tue Dec 6 18:02:56 2022 +0100
Branches: blender-v3.4-release
https://developer.blender.org/rB31ccf79011bd537c2dfbe041a76267c7fe46d4c1

Fix T102336: dynamic topology crash

Ensure there is always an active vertex when a face is hit.

Differential Revision: https://developer.blender.org/D16705

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

M	source/blender/blenkernel/intern/pbvh_bmesh.c

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

diff --git a/source/blender/blenkernel/intern/pbvh_bmesh.c b/source/blender/blenkernel/intern/pbvh_bmesh.c
index 3b0f35263d3..d03f12b98bd 100644
--- a/source/blender/blenkernel/intern/pbvh_bmesh.c
+++ b/source/blender/blenkernel/intern/pbvh_bmesh.c
@@ -1527,8 +1527,8 @@ bool pbvh_bmesh_node_raycast(PBVHNode *node,
           float location[3] = {0.0f};
           madd_v3_v3v3fl(location, ray_start, ray_normal, *depth);
           for (int j = 0; j < 3; j++) {
-            if (len_squared_v3v3(location, cos[j]) <
-                len_squared_v3v3(location, nearest_vertex_co)) {
+            if (j == 0 || len_squared_v3v3(location, cos[j]) <
+                              len_squared_v3v3(location, nearest_vertex_co)) {
               copy_v3_v3(nearest_vertex_co, cos[j]);
               r_active_vertex->i = (intptr_t)node->bm_orvert[node->bm_ortri[i][j]];
             }
@@ -1559,8 +1559,8 @@ bool pbvh_bmesh_node_raycast(PBVHNode *node,
             float location[3] = {0.0f};
             madd_v3_v3v3fl(location, ray_start, ray_normal, *depth);
             for (int j = 0; j < 3; j++) {
-              if (len_squared_v3v3(location, v_tri[j]->co) <
-                  len_squared_v3v3(location, nearest_vertex_co)) {
+              if (j == 0 || len_squared_v3v3(location, v_tri[j]->co) <
+                                len_squared_v3v3(location, nearest_vertex_co)) {
                 copy_v3_v3(nearest_vertex_co, v_tri[j]->co);
                 r_active_vertex->i = (intptr_t)v_tri[j];
               }



More information about the Bf-blender-cvs mailing list