Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBrecht Van Lommel <brechtvanlommel@gmail.com>2019-04-04 15:26:47 +0300
committerBrecht Van Lommel <brechtvanlommel@gmail.com>2019-04-04 15:47:10 +0300
commit12fe0b79ce220409df76b35f8e301ec69b3bf8cd (patch)
treefed5fb171bab2bb592916c946f4632b2c020fc7e /source/blender/alembic
parentaf3f4f29e46afb96aff49be8d1ca42c5fdd7d08e (diff)
Fix part of T62720: crash loading alembic mesh that has no vertices.
Diffstat (limited to 'source/blender/alembic')
-rw-r--r--source/blender/alembic/intern/abc_mesh.cc10
-rw-r--r--source/blender/alembic/intern/abc_points.cc4
2 files changed, 10 insertions, 4 deletions
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);