diff options
author | Joseph Eagar <joeedh@gmail.com> | 2009-05-18 19:53:30 +0400 |
---|---|---|
committer | Joseph Eagar <joeedh@gmail.com> | 2009-05-18 19:53:30 +0400 |
commit | a8c0b748c965c90f81ee7ef77bbeb4d5809ce004 (patch) | |
tree | 38b0f7b1b43e29fc7c1878df670980156485698b | |
parent | b99948d1daed4307cc384775de49e0eb006397f4 (diff) |
fixed a few of the memory leaks
-rw-r--r-- | source/blender/blenkernel/intern/editderivedbmesh.c | 4 | ||||
-rw-r--r-- | source/blender/bmesh/intern/bmesh_construct.c | 5 | ||||
-rw-r--r-- | source/blender/bmesh/intern/bmesh_marking.c | 12 | ||||
-rw-r--r-- | source/blender/editors/mesh/bmeshutils.c | 3 |
4 files changed, 18 insertions, 6 deletions
diff --git a/source/blender/blenkernel/intern/editderivedbmesh.c b/source/blender/blenkernel/intern/editderivedbmesh.c index 42cd76d624f..3bb8ec0907a 100644 --- a/source/blender/blenkernel/intern/editderivedbmesh.c +++ b/source/blender/blenkernel/intern/editderivedbmesh.c @@ -171,6 +171,10 @@ void TM_Free(BMEditMesh *em) em->act_face = NULL; if (em->looptris) MEM_freeN(em->looptris); + + if (em->vert_index) MEM_freeN(em->vert_index); + if (em->edge_index) MEM_freeN(em->edge_index); + if (em->face_index) MEM_freeN(em->face_index); } diff --git a/source/blender/bmesh/intern/bmesh_construct.c b/source/blender/bmesh/intern/bmesh_construct.c index 11fb39fe679..fc06148296a 100644 --- a/source/blender/bmesh/intern/bmesh_construct.c +++ b/source/blender/bmesh/intern/bmesh_construct.c @@ -475,6 +475,11 @@ BMesh *BM_Copy_Mesh(BMesh *bmold) BM_Copy_Attributes(bmold, bm, loops[i], l); } } + + V_FREE(etable); + V_FREE(vtable); + V_FREE(loops); + V_FREE(edges); return bm; } diff --git a/source/blender/bmesh/intern/bmesh_marking.c b/source/blender/bmesh/intern/bmesh_marking.c index c68a9cc5cb5..358e675a84f 100644 --- a/source/blender/bmesh/intern/bmesh_marking.c +++ b/source/blender/bmesh/intern/bmesh_marking.c @@ -60,12 +60,12 @@ void BM_SelectMode_Flush(BMesh *bm) int totsel; - if(bm->selectmode & SCE_SELECT_VERTEX){ - for(e = BMIter_New(&edges, bm, BM_EDGES_OF_MESH, bm ); e; e= BMIter_Step(&edges)){ + if(bm->selectmode & SCE_SELECT_VERTEX) { + for(e = BMIter_New(&edges, bm, BM_EDGES_OF_MESH, bm ); e; e= BMIter_Step(&edges)) { if(BM_TestHFlag(e->v1, BM_SELECT) && BM_TestHFlag(e->v2, BM_SELECT)) BM_SetHFlag(e, 1); else BM_ClearHFlag(e, 0); } - for(f = BMIter_New(&faces, bm, BM_FACES_OF_MESH, bm ); f; f= BMIter_Step(&faces)){ + for(f = BMIter_New(&faces, bm, BM_FACES_OF_MESH, bm ); f; f= BMIter_Step(&faces)) { totsel = 0; l=f->loopbase; do{ @@ -81,7 +81,7 @@ void BM_SelectMode_Flush(BMesh *bm) } } else if(bm->selectmode & SCE_SELECT_EDGE) { - for(f = BMIter_New(&faces, bm, BM_FACES_OF_MESH, bm ); f; f= BMIter_Step(&faces)){ + for(f = BMIter_New(&faces, bm, BM_FACES_OF_MESH, bm ); f; f= BMIter_Step(&faces)) { totsel = 0; l=f->loopbase; do{ @@ -211,11 +211,11 @@ void BM_Select_Face(BMesh *bm, BMFace *f, int select) BM_ClearHFlag(&(f->head), BM_SELECT); l = f->loopbase; - do{ + do { BM_ClearHFlag(&(l->v->head), BM_SELECT); BM_ClearHFlag(&(l->e->head), BM_SELECT); l = ((BMLoop*)(l->head.next)); - }while(l != f->loopbase); + } while(l != f->loopbase); } } diff --git a/source/blender/editors/mesh/bmeshutils.c b/source/blender/editors/mesh/bmeshutils.c index 53bbbcd8b44..6171967879e 100644 --- a/source/blender/editors/mesh/bmeshutils.c +++ b/source/blender/editors/mesh/bmeshutils.c @@ -231,6 +231,7 @@ void EDBM_LoadEditBMesh(Scene *scene, Object *ob) load_editMesh(scene, ob, em); free_editMesh(em); + MEM_freeN(em); } void EDBM_FreeEditBMesh(BMEditMesh *tm) @@ -241,6 +242,8 @@ void EDBM_FreeEditBMesh(BMEditMesh *tm) void EDBM_init_index_arrays(BMEditMesh *tm, int forvert, int foredge, int forface) { + EDBM_free_index_arrays(tm); + if (forvert) { BMIter iter; BMVert *ele; |