Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSergey Sharybin <sergey.vfx@gmail.com>2020-03-20 14:23:14 +0300
committerSergey Sharybin <sergey.vfx@gmail.com>2020-03-20 14:28:29 +0300
commit27553a2e4e03f6f7dfbb91bdeeffb108b9a05f1b (patch)
treec1cb5a63e9649f11a2f730d871a3153c07d9ce50 /source/blender/blenkernel/intern/multires.c
parentd931aacef6f34578a9760a96811b916ea85c5d0f (diff)
Multires: Fix assert when removing modifier in edit mode
It is not guaranteed that with Multires modifier existing there will be CD_MDISPS and CD_GRID_PAINT_MASK custom data layers. Fixes assert in the following scenario: - With default cube, go to edit mode - Add Multires modifier - Remove the Multires modifier
Diffstat (limited to 'source/blender/blenkernel/intern/multires.c')
-rw-r--r--source/blender/blenkernel/intern/multires.c9
1 files changed, 7 insertions, 2 deletions
diff --git a/source/blender/blenkernel/intern/multires.c b/source/blender/blenkernel/intern/multires.c
index f7a3489f02e..b40dfcd3b7f 100644
--- a/source/blender/blenkernel/intern/multires.c
+++ b/source/blender/blenkernel/intern/multires.c
@@ -90,9 +90,14 @@ void multires_customdata_delete(Mesh *me)
* as non-external for further free-ing, so zero element count
* looks safer than em->totface */
CustomData_external_remove(&em->bm->ldata, &me->id, CD_MDISPS, 0);
- BM_data_layer_free(em->bm, &em->bm->ldata, CD_MDISPS);
- BM_data_layer_free(em->bm, &em->bm->ldata, CD_GRID_PAINT_MASK);
+ if (CustomData_has_layer(&em->bm->ldata, CD_MDISPS)) {
+ BM_data_layer_free(em->bm, &em->bm->ldata, CD_MDISPS);
+ }
+
+ if (CustomData_has_layer(&em->bm->ldata, CD_GRID_PAINT_MASK)) {
+ BM_data_layer_free(em->bm, &em->bm->ldata, CD_GRID_PAINT_MASK);
+ }
}
else {
CustomData_external_remove(&me->ldata, &me->id, CD_MDISPS, me->totloop);