diff options
author | Campbell Barton <ideasman42@gmail.com> | 2011-12-09 12:20:27 +0400 |
---|---|---|
committer | Campbell Barton <ideasman42@gmail.com> | 2011-12-09 12:20:27 +0400 |
commit | f025b7b51159cf3cdf49e9ec0eeaf4427010e1f7 (patch) | |
tree | 7f1995589018b4044553c201a738127eae24f1fe /source/blender/modifiers/intern/MOD_mask.c | |
parent | 6a6c9fc160ef292e5949a27842cd4cae9653d346 (diff) |
went over all uses of MDeformWeight.def_nr and made sure the value is clamped when used as an array index.
Diffstat (limited to 'source/blender/modifiers/intern/MOD_mask.c')
-rw-r--r-- | source/blender/modifiers/intern/MOD_mask.c | 15 |
1 files changed, 8 insertions, 7 deletions
diff --git a/source/blender/modifiers/intern/MOD_mask.c b/source/blender/modifiers/intern/MOD_mask.c index 4145dafce7b..1fbe0eef6f3 100644 --- a/source/blender/modifiers/intern/MOD_mask.c +++ b/source/blender/modifiers/intern/MOD_mask.c @@ -137,12 +137,13 @@ static DerivedMesh *applyModifier(ModifierData *md, Object *ob, bDeformGroup *def; char *bone_select_array; int bone_select_tot= 0; + const int defbase_tot= BLI_countlist(&ob->defbase); /* check that there is armature object with bones to use, otherwise return original mesh */ if (ELEM3(NULL, mmd->ob_arm, mmd->ob_arm->pose, ob->defbase.first)) return derivedData; - bone_select_array= MEM_mallocN(BLI_countlist(&ob->defbase) * sizeof(char), "mask array"); + bone_select_array= MEM_mallocN(defbase_tot * sizeof(char), "mask array"); for (i = 0, def = ob->defbase.first; def; def = def->next, i++) { @@ -194,12 +195,12 @@ static DerivedMesh *applyModifier(ModifierData *md, Object *ob, MDeformWeight *dw= dv->dw; int j; - for (j= dv->totweight; j > 0; j--, dw++) - { - if (bone_select_array[dw->def_nr]) - { - if(dw->weight != 0.0f) { - break; + for (j= dv->totweight; j > 0; j--, dw++) { + if (dw->def_nr < defbase_tot) { + if (bone_select_array[dw->def_nr]) { + if(dw->weight != 0.0f) { + break; + } } } } |