[Bf-blender-cvs] [828a3d89b39] blender2.8: Fix T55015: Crash on selection after recent BVH changes

Dalai Felinto noreply at git.blender.org
Wed May 9 15:53:23 CEST 2018


Commit: 828a3d89b39b49a265a4ba7875dcb3edfe9c477f
Author: Dalai Felinto
Date:   Wed May 9 15:38:58 2018 +0200
Branches: blender2.8
https://developer.blender.org/rB828a3d89b39b49a265a4ba7875dcb3edfe9c477f

Fix T55015: Crash on selection after recent BVH changes

Runtime data should always be initialized to NULL on read-time.

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

M	source/blender/blenkernel/BKE_mesh.h
M	source/blender/blenkernel/intern/mesh_runtime.c
M	source/blender/blenloader/intern/readfile.c

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

diff --git a/source/blender/blenkernel/BKE_mesh.h b/source/blender/blenkernel/BKE_mesh.h
index a170a2a32eb..53300e92e67 100644
--- a/source/blender/blenkernel/BKE_mesh.h
+++ b/source/blender/blenkernel/BKE_mesh.h
@@ -192,7 +192,7 @@ void BKE_mesh_mselect_active_set(struct Mesh *me, int index, int type);
 void BKE_mesh_apply_vert_coords(struct Mesh *mesh, float (*vertCoords)[3]);
 
 /* *** mesh_runtime.c *** */
-
+void                   BKE_mesh_runtime_reset(struct Mesh *mesh);
 int                    BKE_mesh_runtime_looptri_len(const struct Mesh *mesh);
 void                   BKE_mesh_runtime_looptri_recalc(struct Mesh *mesh);
 const struct MLoopTri *BKE_mesh_runtime_looptri_ensure(struct Mesh *mesh);
diff --git a/source/blender/blenkernel/intern/mesh_runtime.c b/source/blender/blenkernel/intern/mesh_runtime.c
index aebf03151d1..96d31fa9a42 100644
--- a/source/blender/blenkernel/intern/mesh_runtime.c
+++ b/source/blender/blenkernel/intern/mesh_runtime.c
@@ -44,6 +44,13 @@
 
 static ThreadRWMutex loops_cache_lock = PTHREAD_RWLOCK_INITIALIZER;
 
+/**
+ * Default values defined at read time.
+ */
+void BKE_mesh_runtime_reset(Mesh *mesh)
+{
+	memset(&mesh->runtime, 0, sizeof(mesh->runtime));
+}
 
 /* This is a ported copy of DM_ensure_looptri_data(dm) */
 /**
diff --git a/source/blender/blenloader/intern/readfile.c b/source/blender/blenloader/intern/readfile.c
index e65d4e17539..56f18072843 100644
--- a/source/blender/blenloader/intern/readfile.c
+++ b/source/blender/blenloader/intern/readfile.c
@@ -4685,8 +4685,8 @@ static void direct_link_mesh(FileData *fd, Mesh *mesh)
 
 	mesh->bb = NULL;
 	mesh->edit_btmesh = NULL;
-	mesh->runtime.batch_cache = NULL;
-	
+	BKE_mesh_runtime_reset(mesh);
+
 	/* happens with old files */
 	if (mesh->mselect == NULL) {
 		mesh->totselect = 0;



More information about the Bf-blender-cvs mailing list