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
path: root/source
diff options
context:
space:
mode:
authorJoseph Eagar <joeedh@gmail.com>2011-05-12 22:46:21 +0400
committerJoseph Eagar <joeedh@gmail.com>2011-05-12 22:46:21 +0400
commite636893b1b362840dca779c33b6dca87be5dd0bd (patch)
treefb154b3d6e87214fdb04d7aea80093777641769a /source
parentcc2352cdd02b36771e17d5ee66946b08f1eb1ab2 (diff)
=bmesh= fixed knifetool mem leak
Diffstat (limited to 'source')
-rw-r--r--source/blender/blenkernel/intern/editderivedbmesh.c39
-rwxr-xr-xsource/blender/editors/mesh/knifetool.c6
2 files changed, 5 insertions, 40 deletions
diff --git a/source/blender/blenkernel/intern/editderivedbmesh.c b/source/blender/blenkernel/intern/editderivedbmesh.c
index eb84bfd6c95..d1773632aeb 100644
--- a/source/blender/blenkernel/intern/editderivedbmesh.c
+++ b/source/blender/blenkernel/intern/editderivedbmesh.c
@@ -133,45 +133,6 @@ static void BMEdit_RecalcTesselation_intern(BMEditMesh *tm)
if (tm->looptris) MEM_freeN(tm->looptris);
-#if 0 //simple quad/triangle code for performance testing purposes
- looptris = MEM_callocN(sizeof(void*)*bm->totface*8, "looptris");
-
- f = BMIter_New(&iter, bm, BM_FACES_OF_MESH, NULL);
- for ( ; f; f=BMIter_Step(&iter)) {
- EditVert *v, *lastv=NULL, *firstv=NULL;
- EditEdge *e;
- EditFace *efa;
-
- /*don't consider two-edged faces*/
- if (f->len < 3) continue;
-
- //BLI_array_growone(looptris);
- //BLI_array_growone(looptris);
- //BLI_array_growone(looptris);
-
- looptris[i*3] = f->loopbase;
- looptris[i*3+1] = f->loopbase->head.next;
- looptris[i*3+2] = f->loopbase->head.next->next;
- i++;
-
- if (f->len > 3) {
- //BLI_array_growone(looptris);
- //BLI_array_growone(looptris);
- //BLI_array_growone(looptris);
-
- looptris[i*3] = f->loopbase;
- looptris[i*3+1] = f->loopbase->head.next->next;
- looptris[i*3+2] = f->loopbase->head.next->next->next;
- i++;
- }
-
- }
-
- tm->tottri = i;
- tm->looptris = looptris;
- return;
-#endif
-
f = BMIter_New(&iter, bm, BM_FACES_OF_MESH, NULL);
for ( ; f; f=BMIter_Step(&iter)) {
EditVert *v, *lastv=NULL, *firstv=NULL;
diff --git a/source/blender/editors/mesh/knifetool.c b/source/blender/editors/mesh/knifetool.c
index c39f88bf19b..db4dea15584 100755
--- a/source/blender/editors/mesh/knifetool.c
+++ b/source/blender/editors/mesh/knifetool.c
@@ -886,7 +886,9 @@ static BMEdgeHit *knife_edge_tri_isect(knifetool_opdata *kcd, BMBVHTree *bmtree,
if (results)
MEM_freeN(results);
+ BLI_bvhtree_free(tree2);
*count = BLI_array_count(edges);
+
return edges;
}
@@ -1813,8 +1815,10 @@ static int knifetool_modal (bContext *C, wmOperator *op, wmEvent *event)
}
obedit = CTX_data_edit_object(C);
- if (!obedit || obedit->type != OB_MESH || ((Mesh*)obedit->data)->edit_btmesh != kcd->em)
+ if (!obedit || obedit->type != OB_MESH || ((Mesh*)obedit->data)->edit_btmesh != kcd->em) {
+ knifetool_exit(C, op);
return OPERATOR_FINISHED;
+ }
view3d_operator_needs_opengl(C);