[Bf-blender-cvs] [81f15a51aa7] master: Sculpt: Fix sculpt face set undo creating duplicate face set layers

Joseph Eagar noreply at git.blender.org
Sat Oct 1 00:35:27 CEST 2022


Commit: 81f15a51aa7891c16579d004eac446ec4e7866be
Author: Joseph Eagar
Date:   Fri Sep 30 15:35:11 2022 -0700
Branches: master
https://developer.blender.org/rB81f15a51aa7891c16579d004eac446ec4e7866be

Sculpt: Fix sculpt face set undo creating duplicate face set layers

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

M	source/blender/editors/sculpt_paint/sculpt_undo.c

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

diff --git a/source/blender/editors/sculpt_paint/sculpt_undo.c b/source/blender/editors/sculpt_paint/sculpt_undo.c
index 04c60933c73..ee9ae6a898b 100644
--- a/source/blender/editors/sculpt_paint/sculpt_undo.c
+++ b/source/blender/editors/sculpt_paint/sculpt_undo.c
@@ -486,8 +486,13 @@ static bool sculpt_undo_restore_face_sets(bContext *C, SculptUndoNode *unode)
   BKE_view_layer_synced_ensure(scene, view_layer);
   Object *ob = BKE_view_layer_active_object_get(view_layer);
   Mesh *me = BKE_object_get_original_mesh(ob);
-  int *face_sets = CustomData_add_layer_named(
-      &me->pdata, CD_PROP_INT32, CD_CONSTRUCT, NULL, me->totpoly, ".sculpt_face_set");
+
+  int *face_sets = CustomData_get_layer_named(&me->pdata, CD_PROP_INT32, ".sculpt_face_set");
+  if (!face_sets) {
+    face_sets = CustomData_add_layer_named(
+        &me->pdata, CD_PROP_INT32, CD_CONSTRUCT, NULL, me->totpoly, ".sculpt_face_set");
+  }
+
   for (int i = 0; i < me->totpoly; i++) {
     SWAP(int, face_sets[i], unode->face_sets[i]);
   }



More information about the Bf-blender-cvs mailing list