[Bf-blender-cvs] [106edd7caf2] sculpt-dev: sculpt-dev: fix crash in extract face set

Joseph Eagar noreply at git.blender.org
Mon Oct 17 03:58:25 CEST 2022


Commit: 106edd7caf296db7cabf4554d540037e2ddedee0
Author: Joseph Eagar
Date:   Sun Oct 16 18:58:08 2022 -0700
Branches: sculpt-dev
https://developer.blender.org/rB106edd7caf296db7cabf4554d540037e2ddedee0

sculpt-dev: fix crash in extract face set

Also fixed a few compile errors

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

M	source/blender/blenkernel/intern/multires.cc
M	source/blender/blenkernel/intern/paint.cc

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

diff --git a/source/blender/blenkernel/intern/multires.cc b/source/blender/blenkernel/intern/multires.cc
index ef3db5f3675..5e531158f50 100644
--- a/source/blender/blenkernel/intern/multires.cc
+++ b/source/blender/blenkernel/intern/multires.cc
@@ -869,7 +869,7 @@ extern "C" Object *multires_dump_grids_bmesh(Object *bmob, BMesh *bm)
   }
 
   Main *bmain = G.main;
-  char *name = "multires_dump";
+  const char *name = "multires_dump";
 
   bContext *ctx = CTX_create();
   CTX_data_main_set(ctx, bmain);
@@ -1003,7 +1003,7 @@ extern "C" Object *multires_dump_grids_bmesh(Object *bmob, BMesh *bm)
             int e;
 
             if (!BLI_edgehash_haskey(eh, a, b)) {
-              BLI_edgehash_insert(eh, a, b, (void *)medi);
+              BLI_edgehash_insert(eh, a, b, POINTER_FROM_INT(medi));
               e = medi;
 
               MEdge *med = medge + medi;
@@ -1014,7 +1014,7 @@ extern "C" Object *multires_dump_grids_bmesh(Object *bmob, BMesh *bm)
               medi++;
             }
             else {
-              e = (int)BLI_edgehash_lookup(eh, a, b);
+              e = POINTER_AS_INT(BLI_edgehash_lookup(eh, a, b));
             }
 
             ml[i2].e = e;
@@ -1271,14 +1271,16 @@ void BKE_multires_bmesh_space_set(Object *ob, BMesh *bm, int mode)
   BLI_parallel_range_settings_defaults(&settings);
   settings.min_iter_per_thread = CCG_TASK_LIMIT;
 
-  MultiresThreadedData data = {
-      .bmop = (MultiResSpace)mode,
-      .sd = sd,
-      .lvl = mmd->totlvl,
-      .bm = bm,
-      .cd_mdisps_off = cd_disp_off,
-      .gridSize = gridSize,
-  };
+  MultiresThreadedData data;
+
+  memset(static_cast<void *>(&data), 0, sizeof(data));
+
+  data.bmop = (MultiResSpace)mode;
+  data.sd = sd;
+  data.lvl = mmd->totlvl;
+  data.bm = bm;
+  data.cd_mdisps_off = cd_disp_off;
+  data.gridSize = gridSize;
 
   BLI_task_parallel_range(0, totpoly, &data, multires_bmesh_space_set_cb, &settings);
 
diff --git a/source/blender/blenkernel/intern/paint.cc b/source/blender/blenkernel/intern/paint.cc
index 1e76fbadb4b..c8602b74e3c 100644
--- a/source/blender/blenkernel/intern/paint.cc
+++ b/source/blender/blenkernel/intern/paint.cc
@@ -2420,7 +2420,9 @@ int BKE_sculpt_mask_layers_ensure(Object *ob, MultiresModifierData *mmd)
     ret |= SCULPT_MASK_LAYER_CALC_VERT;
   }
 
-  BKE_sculptsession_update_attr_refs(ob);
+  if (ob->sculpt) {
+    BKE_sculptsession_update_attr_refs(ob);
+  }
 
   return ret;
 }



More information about the Bf-blender-cvs mailing list