[Bf-blender-cvs] [12fe0b79ce2] master: Fix part of T62720: crash loading alembic mesh that has no vertices.

Brecht Van Lommel noreply at git.blender.org
Thu Apr 4 14:47:50 CEST 2019


Commit: 12fe0b79ce220409df76b35f8e301ec69b3bf8cd
Author: Brecht Van Lommel
Date:   Thu Apr 4 14:26:47 2019 +0200
Branches: master
https://developer.blender.org/rB12fe0b79ce220409df76b35f8e301ec69b3bf8cd

Fix part of T62720: crash loading alembic mesh that has no vertices.

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

M	source/blender/alembic/intern/abc_mesh.cc
M	source/blender/alembic/intern/abc_points.cc

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

diff --git a/source/blender/alembic/intern/abc_mesh.cc b/source/blender/alembic/intern/abc_mesh.cc
index cdb9312b3db..2472fe1945f 100644
--- a/source/blender/alembic/intern/abc_mesh.cc
+++ b/source/blender/alembic/intern/abc_mesh.cc
@@ -1019,7 +1019,7 @@ CDStreamConfig get_config(Mesh *mesh)
 {
 	CDStreamConfig config;
 
-	BLI_assert(mesh->mvert);
+	BLI_assert(mesh->mvert || mesh->totvert == 0);
 
 	config.user_data = mesh;
 	config.mvert = mesh->mvert;
@@ -1059,7 +1059,9 @@ void AbcMeshReader::readObjectData(Main *bmain, const Alembic::Abc::ISampleSelec
 	m_object->data = mesh;
 
 	Mesh *read_mesh = this->read_mesh(mesh, sample_sel, MOD_MESHSEQ_READ_ALL, NULL);
-	BKE_mesh_nomain_to_mesh(read_mesh, mesh, m_object, &CD_MASK_MESH, true);
+	if (read_mesh != mesh) {
+		BKE_mesh_nomain_to_mesh(read_mesh, mesh, m_object, &CD_MASK_MESH, true);
+	}
 
 	if (m_settings->validate_meshes) {
 		BKE_mesh_validate(mesh, false, false);
@@ -1342,7 +1344,9 @@ void AbcSubDReader::readObjectData(Main *bmain, const Alembic::Abc::ISampleSelec
 	m_object->data = mesh;
 
 	Mesh *read_mesh = this->read_mesh(mesh, sample_sel, MOD_MESHSEQ_READ_ALL, NULL);
-	BKE_mesh_nomain_to_mesh(read_mesh, mesh, m_object, &CD_MASK_MESH, true);
+	if (read_mesh != mesh) {
+		BKE_mesh_nomain_to_mesh(read_mesh, mesh, m_object, &CD_MASK_MESH, true);
+	}
 
 	ISubDSchema::Sample sample;
 	try {
diff --git a/source/blender/alembic/intern/abc_points.cc b/source/blender/alembic/intern/abc_points.cc
index 88154dabeed..bc8c1e2debb 100644
--- a/source/blender/alembic/intern/abc_points.cc
+++ b/source/blender/alembic/intern/abc_points.cc
@@ -174,7 +174,9 @@ void AbcPointsReader::readObjectData(Main *bmain, const Alembic::Abc::ISampleSel
 	Mesh *mesh = BKE_mesh_add(bmain, m_data_name.c_str());
 	Mesh *read_mesh = this->read_mesh(mesh, sample_sel, 0, NULL);
 
-	BKE_mesh_nomain_to_mesh(read_mesh, mesh, m_object, &CD_MASK_MESH, true);
+	if (read_mesh != mesh) {
+		BKE_mesh_nomain_to_mesh(read_mesh, mesh, m_object, &CD_MASK_MESH, true);
+	}
 
 	if (m_settings->validate_meshes) {
 		BKE_mesh_validate(mesh, false, false);



More information about the Bf-blender-cvs mailing list