diff options
author | Bastien Montagne <montagne29@wanadoo.fr> | 2018-06-16 17:19:53 +0300 |
---|---|---|
committer | Bastien Montagne <montagne29@wanadoo.fr> | 2018-06-16 17:22:00 +0300 |
commit | ace8ad861de78a19645cdf87e138eda6bc66ea3e (patch) | |
tree | 71eea95ebc3052f8fa4a14d6bb9c5342466b2374 /source | |
parent | 35c71aed2591637f5d06ec002ef20ac2901d916a (diff) |
Fix T55427: Removing Vertex Group used by Data Transfer Modifier results in crash.
Only fixing crash, proper handling (a.k.a remapping) of all
possible cases here, for all possible data layers, is rather involved...
Diffstat (limited to 'source')
-rw-r--r-- | source/blender/blenkernel/intern/deform.c | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/source/blender/blenkernel/intern/deform.c b/source/blender/blenkernel/intern/deform.c index 22ff8bf4bb7..f33f17019b3 100644 --- a/source/blender/blenkernel/intern/deform.c +++ b/source/blender/blenkernel/intern/deform.c @@ -1189,7 +1189,12 @@ bool data_transfer_layersmapping_vgroups( if (fromlayers >= 0) { idx_src = fromlayers; - BLI_assert(idx_src < BLI_listbase_count(&ob_src->defbase)); + if (idx_src >= BLI_listbase_count(&ob_src->defbase)) { + /* This can happen when vgroups are removed from source object... + * Remapping would be really tricky here, we'd need to go over all objects in Main everytime we delete + * a vgroup... for now, simpler and safer to abort. */ + return false; + } } else if ((idx_src = ob_src->actdef - 1) == -1) { return false; |