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:
authorJacques Lucke <jacques@blender.org>2021-11-03 12:42:48 +0300
committerJacques Lucke <jacques@blender.org>2021-11-03 12:42:48 +0300
commit2b12b4cd7dccfa51cec53d5ae885a2142563fb17 (patch)
tree161fd3d7e923b1e7d3ac5143b3bf85044cd71108 /source/blender/blenkernel/intern/DerivedMesh.cc
parent68759625b113cb190e96024fec5f397da61be0d0 (diff)
Fix: make sure geometry owns mesh before taking ownership
Differential Revision: https://developer.blender.org/D13075
Diffstat (limited to 'source/blender/blenkernel/intern/DerivedMesh.cc')
-rw-r--r--source/blender/blenkernel/intern/DerivedMesh.cc4
1 files changed, 4 insertions, 0 deletions
diff --git a/source/blender/blenkernel/intern/DerivedMesh.cc b/source/blender/blenkernel/intern/DerivedMesh.cc
index 3ec0ab9c512..4b1332d5b84 100644
--- a/source/blender/blenkernel/intern/DerivedMesh.cc
+++ b/source/blender/blenkernel/intern/DerivedMesh.cc
@@ -921,6 +921,10 @@ static Mesh *modifier_modify_mesh_and_geometry_set(ModifierData *md,
/* Release the mesh from the geometry set again. */
if (geometry_set.has<MeshComponent>()) {
MeshComponent &mesh_component = geometry_set.get_component_for_write<MeshComponent>();
+ if (mesh_component.get_for_read() != input_mesh) {
+ /* Make sure the mesh component actually owns the mesh before taking over ownership. */
+ mesh_component.ensure_owns_direct_data();
+ }
mesh_output = mesh_component.release();
}