diff options
author | Joseph Eagar <joeedh@gmail.com> | 2022-10-17 04:58:08 +0300 |
---|---|---|
committer | Joseph Eagar <joeedh@gmail.com> | 2022-10-17 04:58:08 +0300 |
commit | 106edd7caf296db7cabf4554d540037e2ddedee0 (patch) | |
tree | 8d3364234abbc9d71bc7ded4870abead930e2496 | |
parent | 8c6a054e8eb2c707fdc4dc7743fe293eebd5d6b2 (diff) |
sculpt-dev: fix crash in extract face set
Also fixed a few compile errors
-rw-r--r-- | source/blender/blenkernel/intern/multires.cc | 24 | ||||
-rw-r--r-- | source/blender/blenkernel/intern/paint.cc | 4 |
2 files changed, 16 insertions, 12 deletions
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; } |