fix for memory leak in vgroup_copy_active_to_sel

This commit is contained in:
Campbell Barton 2013-06-27 17:11:23 +00:00
parent c15b13f78f
commit 73fcfd8651

@ -557,10 +557,7 @@ static void vgroup_copy_active_to_sel(Object *ob, eVGroupSelect subset_type)
const int cd_dvert_offset = CustomData_get_offset(&em->bm->vdata, CD_MDEFORMVERT); const int cd_dvert_offset = CustomData_get_offset(&em->bm->vdata, CD_MDEFORMVERT);
dvert_act = ED_mesh_active_dvert_get_em(ob, &eve_act); dvert_act = ED_mesh_active_dvert_get_em(ob, &eve_act);
if (dvert_act == NULL) { if (dvert_act) {
return;
}
BM_ITER_MESH_INDEX (eve, &iter, em->bm, BM_VERTS_OF_MESH, i) { BM_ITER_MESH_INDEX (eve, &iter, em->bm, BM_VERTS_OF_MESH, i) {
if (BM_elem_flag_test(eve, BM_ELEM_SELECT) && eve != eve_act) { if (BM_elem_flag_test(eve, BM_ELEM_SELECT) && eve != eve_act) {
MDeformVert *dv = BM_ELEM_CD_GET_VOID_P(eve, cd_dvert_offset); MDeformVert *dv = BM_ELEM_CD_GET_VOID_P(eve, cd_dvert_offset);
@ -571,15 +568,13 @@ static void vgroup_copy_active_to_sel(Object *ob, eVGroupSelect subset_type)
} }
} }
} }
}
else { else {
MDeformVert *dv; MDeformVert *dv;
int v_act; int v_act;
dvert_act = ED_mesh_active_dvert_get_ob(ob, &v_act); dvert_act = ED_mesh_active_dvert_get_ob(ob, &v_act);
if (dvert_act == NULL) { if (dvert_act) {
return;
}
dv = me->dvert; dv = me->dvert;
for (i = 0; i < me->totvert; i++, dv++) { for (i = 0; i < me->totvert; i++, dv++) {
if ((me->mvert[i].flag & SELECT) && dv != dvert_act) { if ((me->mvert[i].flag & SELECT) && dv != dvert_act) {
@ -590,6 +585,7 @@ static void vgroup_copy_active_to_sel(Object *ob, eVGroupSelect subset_type)
} }
} }
} }
}
MEM_freeN((void *)vgroup_validmap); MEM_freeN((void *)vgroup_validmap);
} }