From 1e193a0b564c72c006203a1e349269e4bb004d0e Mon Sep 17 00:00:00 2001 From: Jacques Lucke Date: Sat, 16 Jan 2021 15:24:22 +0100 Subject: Fix T84757: feedback loop with when modifying vertex group with nodes The issue was that the mesh shared its vertex weights with the original mesh (to reduce memory consumption). The solution is to make a local copy of the vertex weights in this case. --- source/blender/blenkernel/intern/attribute_access.cc | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/source/blender/blenkernel/intern/attribute_access.cc b/source/blender/blenkernel/intern/attribute_access.cc index a7939beae90..2e1094364fd 100644 --- a/source/blender/blenkernel/intern/attribute_access.cc +++ b/source/blender/blenkernel/intern/attribute_access.cc @@ -1191,6 +1191,11 @@ WriteAttributePtr MeshComponent::attribute_try_get_for_write(const StringRef att if (mesh_->dvert == nullptr) { BKE_object_defgroup_data_create(&mesh_->id); } + else { + /* Copy the data layer if it is shared with some other mesh. */ + mesh_->dvert = (MDeformVert *)CustomData_duplicate_referenced_layer( + &mesh_->vdata, CD_MDEFORMVERT, mesh_->totvert); + } return std::make_unique( mesh_->dvert, mesh_->totvert, vertex_group_index); } -- cgit v1.2.3