diff options
author | Joseph Eagar <joeedh@gmail.com> | 2011-05-12 22:46:21 +0400 |
---|---|---|
committer | Joseph Eagar <joeedh@gmail.com> | 2011-05-12 22:46:21 +0400 |
commit | e636893b1b362840dca779c33b6dca87be5dd0bd (patch) | |
tree | fb154b3d6e87214fdb04d7aea80093777641769a /source | |
parent | cc2352cdd02b36771e17d5ee66946b08f1eb1ab2 (diff) |
=bmesh= fixed knifetool mem leak
Diffstat (limited to 'source')
-rw-r--r-- | source/blender/blenkernel/intern/editderivedbmesh.c | 39 | ||||
-rwxr-xr-x | source/blender/editors/mesh/knifetool.c | 6 |
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); |