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:
authorCampbell Barton <ideasman42@gmail.com>2015-08-06 09:52:39 +0300
committerCampbell Barton <ideasman42@gmail.com>2015-08-06 09:52:39 +0300
commitced9381e209b8bd17baa21db74c074676e643866 (patch)
tree3d0a711de5b81d6abed198dd26f1a66c741f0662 /source/blender/blenkernel/intern/deform.c
parentc2cfec64e3528854971302561a50cff4ad2c8d01 (diff)
Simplify defvert_remove_group(), use realloc
Patch by @chadf
Diffstat (limited to 'source/blender/blenkernel/intern/deform.c')
-rw-r--r--source/blender/blenkernel/intern/deform.c20
1 files changed, 6 insertions, 14 deletions
diff --git a/source/blender/blenkernel/intern/deform.c b/source/blender/blenkernel/intern/deform.c
index 46d3dbb462f..6e5747ac9c9 100644
--- a/source/blender/blenkernel/intern/deform.c
+++ b/source/blender/blenkernel/intern/deform.c
@@ -843,7 +843,6 @@ void defvert_add_index_notest(MDeformVert *dvert, int defgroup, const float weig
void defvert_remove_group(MDeformVert *dvert, MDeformWeight *dw)
{
if (dvert && dw) {
- MDeformWeight *dw_new;
int i = dw - dvert->dw;
/* Security check! */
@@ -856,20 +855,13 @@ void defvert_remove_group(MDeformVert *dvert, MDeformWeight *dw)
* this deform weight, and reshuffle the others.
*/
if (dvert->totweight) {
- dw_new = MEM_mallocN(sizeof(MDeformWeight) * (dvert->totweight), __func__);
- if (dvert->dw) {
-#if 1 /* since we don't care about order, swap this with the last, save a memcpy */
- if (i != dvert->totweight) {
- dvert->dw[i] = dvert->dw[dvert->totweight];
- }
- memcpy(dw_new, dvert->dw, sizeof(MDeformWeight) * dvert->totweight);
-#else
- memcpy(dw_new, dvert->dw, sizeof(MDeformWeight) * i);
- memcpy(dw_new + i, dvert->dw + i + 1, sizeof(MDeformWeight) * (dvert->totweight - i));
-#endif
- MEM_freeN(dvert->dw);
+ BLI_assert(dvert->dw != NULL);
+
+ if (i != dvert->totweight) {
+ dvert->dw[i] = dvert->dw[dvert->totweight];
}
- dvert->dw = dw_new;
+
+ dvert->dw = MEM_reallocN(dvert->dw, sizeof(MDeformWeight) * dvert->totweight);
}
else {
/* If there are no other deform weights left then just remove this one. */