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:
authorAndrew Wiggin <ender79bl@gmail.com>2011-10-10 18:35:33 +0400
committerAndrew Wiggin <ender79bl@gmail.com>2011-10-10 18:35:33 +0400
commit5ae7a91eb38546f0e0255a8e86807b42afeefc34 (patch)
tree6db0bbaeb8bf2f96fde5d19c52b7fb3bd4a61516
parent429a16ddb146e43aeb5ec20f83b714949153af0d (diff)
Fix a memory leak when attempting edge slide with no edges selected
-rw-r--r--source/blender/editors/transform/transform_conversions.c33
1 files changed, 19 insertions, 14 deletions
diff --git a/source/blender/editors/transform/transform_conversions.c b/source/blender/editors/transform/transform_conversions.c
index f53151ccc5f..f66bffadcfa 100644
--- a/source/blender/editors/transform/transform_conversions.c
+++ b/source/blender/editors/transform/transform_conversions.c
@@ -2089,10 +2089,12 @@ static void createTransEditVerts(bContext *C, TransInfo *t)
// transform now requires awareness for select mode, so we tag the f1 flags in verts
if(selectmode & SCE_SELECT_VERTEX) {
BM_ITER(eve, &iter, bm, BM_VERTS_OF_MESH, NULL) {
- if(!BM_TestHFlag(eve, BM_HIDDEN) && BM_TestHFlag(eve, BM_SELECT))
+ if (BM_Selected(bm, eve)) {
BM_SetIndex(eve, SELECT);
- else
+ }
+ else {
BM_SetIndex(eve, 0);
+ }
}
}
else if(selectmode & SCE_SELECT_EDGE) {
@@ -2103,8 +2105,10 @@ static void createTransEditVerts(bContext *C, TransInfo *t)
eed = BMIter_New(&iter, bm, BM_EDGES_OF_MESH, NULL);
for( ; eed; eed=BMIter_Step(&iter)) {
- if(!BM_TestHFlag(eed, BM_HIDDEN) && BM_TestHFlag(eed, BM_SELECT))
- BM_SetIndex(eed->v1, SELECT), BM_SetIndex(eed->v2, SELECT);
+ if (BM_Selected(bm, eed)) {
+ BM_SetIndex(eed->v1, SELECT);
+ BM_SetIndex(eed->v2, SELECT);
+ }
}
}
else {
@@ -2114,7 +2118,7 @@ static void createTransEditVerts(bContext *C, TransInfo *t)
efa = BMIter_New(&iter, bm, BM_FACES_OF_MESH, NULL);
for( ; efa; efa=BMIter_Step(&iter)) {
- if(!BM_TestHFlag(efa, BM_HIDDEN) && BM_TestHFlag(efa, BM_SELECT)) {
+ if (BM_Selected(bm, efa)) {
BMIter liter;
BMLoop *l;
@@ -2133,17 +2137,17 @@ static void createTransEditVerts(bContext *C, TransInfo *t)
for(a=0; eve; eve=BMIter_Step(&iter), a++) {
BLI_array_growone(selstate);
- if(!BM_TestHFlag(eve, BM_HIDDEN)) {
- if(BM_GetIndex(eve)) {
- selstate[a] = 1;
- countsel++;
- }
- if(propmode) count++;
+ if(BM_GetIndex(eve)) {
+ selstate[a] = 1;
+ countsel++;
}
+ if(propmode) count++;
}
- /* note: in prop mode we need at least 1 selected */
- if (countsel==0) return;
+ /* note: in prop mode we need at least 1 selected */
+ if (countsel == 0) {
+ goto cleanup;
+ }
/* check active */
if (em->bm->selected.last) {
@@ -2284,7 +2288,8 @@ static void createTransEditVerts(bContext *C, TransInfo *t)
}
}
}
-
+
+cleanup:
/* crazy space free */
if(quats)
MEM_freeN(quats);