[Bf-blender-cvs] [5c86f0369c6] master: Fix: Deleting vertex group attribute can change original mesh

Hans Goudey noreply at git.blender.org
Fri Mar 11 18:26:10 CET 2022


Commit: 5c86f0369c6fc458c828cf60268774ac0c4cf32a
Author: Hans Goudey
Date:   Fri Mar 11 11:25:59 2022 -0600
Branches: master
https://developer.blender.org/rB5c86f0369c6fc458c828cf60268774ac0c4cf32a

Fix: Deleting vertex group attribute can change original mesh

There was an error with the attribute API implementation for vertex
groups. If the vertex group layer referenced an original mesh, it wasn't
properly duplicated for writing.

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

M	source/blender/blenkernel/intern/geometry_component_mesh.cc

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

diff --git a/source/blender/blenkernel/intern/geometry_component_mesh.cc b/source/blender/blenkernel/intern/geometry_component_mesh.cc
index 104166df913..cbd7ec9155a 100644
--- a/source/blender/blenkernel/intern/geometry_component_mesh.cc
+++ b/source/blender/blenkernel/intern/geometry_component_mesh.cc
@@ -1049,6 +1049,11 @@ class VertexGroupsAttributeProvider final : public DynamicAttributesProvider {
     if (mesh->dvert == nullptr) {
       return true;
     }
+
+    /* 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);
+
     for (MDeformVert &dvert : MutableSpan(mesh->dvert, mesh->totvert)) {
       MDeformWeight *weight = BKE_defvert_find_index(&dvert, index);
       BKE_defvert_remove_group(&dvert, weight);



More information about the Bf-blender-cvs mailing list