[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