diff options
author | Sybren A. Stüvel <sybren@stuvel.eu> | 2019-04-11 16:03:08 +0300 |
---|---|---|
committer | Sybren A. Stüvel <sybren@stuvel.eu> | 2019-04-11 17:22:55 +0300 |
commit | 0576f4ca9b41f1f0e7dfdd896e539488419306ff (patch) | |
tree | 4349044db3dc7169f7086968b0defdc4a0d3554f /source/blender/alembic/intern/abc_mesh.cc | |
parent | 7509d0bbf1f24e0c6ac519f807d4210c9befe94f (diff) |
Fix T62664: Exporting Metaballs as Alembic crashes Blender
The `AbcMetaballWriter` now subclasses `AbcGenericMeshWriter` instead of
wrapping an `AbcMeshWriter`. `AbcGenericMeshWriter` was created for this
purpose (writing non-mesh objects as mesh to Alembic) and performs the work
in a cleaner and, more importantly, not crashing way.
Diffstat (limited to 'source/blender/alembic/intern/abc_mesh.cc')
-rw-r--r-- | source/blender/alembic/intern/abc_mesh.cc | 9 |
1 files changed, 7 insertions, 2 deletions
diff --git a/source/blender/alembic/intern/abc_mesh.cc b/source/blender/alembic/intern/abc_mesh.cc index 2472fe1945f..97cd6ffc0e3 100644 --- a/source/blender/alembic/intern/abc_mesh.cc +++ b/source/blender/alembic/intern/abc_mesh.cc @@ -387,14 +387,19 @@ void AbcGenericMeshWriter::do_write() writeMesh(mesh); } - if (needsfree) BKE_id_free(NULL, mesh); + if (needsfree) freeEvaluatedMesh(mesh); } catch (...) { - if (needsfree) BKE_id_free(NULL, mesh); + if (needsfree) freeEvaluatedMesh(mesh); throw; } } +void AbcGenericMeshWriter::freeEvaluatedMesh(struct Mesh *mesh) +{ + BKE_id_free(NULL, mesh); +} + void AbcGenericMeshWriter::writeMesh(struct Mesh *mesh) { std::vector<Imath::V3f> points, normals; |