[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [54449] trunk/blender/source/blender: fix for own bug - memory leak when cancelling weight gradient tool

Campbell Barton ideasman42 at gmail.com
Mon Feb 11 05:43:49 CET 2013


Revision: 54449
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=54449
Author:   campbellbarton
Date:     2013-02-11 04:43:49 +0000 (Mon, 11 Feb 2013)
Log Message:
-----------
fix for own bug - memory leak when cancelling weight gradient tool

Modified Paths:
--------------
    trunk/blender/source/blender/blenkernel/BKE_deform.h
    trunk/blender/source/blender/blenkernel/intern/deform.c
    trunk/blender/source/blender/editors/sculpt_paint/paint_vertex.c

Modified: trunk/blender/source/blender/blenkernel/BKE_deform.h
===================================================================
--- trunk/blender/source/blender/blenkernel/BKE_deform.h	2013-02-11 03:01:50 UTC (rev 54448)
+++ trunk/blender/source/blender/blenkernel/BKE_deform.h	2013-02-11 04:43:49 UTC (rev 54449)
@@ -56,6 +56,7 @@
 void                     defvert_clear(struct MDeformVert *dvert);
 int                      defvert_find_shared(const struct MDeformVert *dvert_a, const struct MDeformVert *dvert_b);
 
+void BKE_defvert_array_free_elems(struct MDeformVert *dvert, int totvert);
 void BKE_defvert_array_free(struct MDeformVert *dvert, int totvert);
 void BKE_defvert_array_copy(struct MDeformVert *dst, const struct MDeformVert *src, int totvert);
 

Modified: trunk/blender/source/blender/blenkernel/intern/deform.c
===================================================================
--- trunk/blender/source/blender/blenkernel/intern/deform.c	2013-02-11 03:01:50 UTC (rev 54448)
+++ trunk/blender/source/blender/blenkernel/intern/deform.c	2013-02-11 04:43:49 UTC (rev 54449)
@@ -809,7 +809,7 @@
 
 }
 
-void BKE_defvert_array_free(MDeformVert *dvert, int totvert)
+void BKE_defvert_array_free_elems(MDeformVert *dvert, int totvert)
 {
 	/* Instead of freeing the verts directly,
 	 * call this function to delete any special
@@ -823,6 +823,18 @@
 	for (i = 0; i < totvert; i++) {
 		if (dvert[i].dw) MEM_freeN(dvert[i].dw);
 	}
+}
+
+void BKE_defvert_array_free(MDeformVert *dvert, int totvert)
+{
+	/* Instead of freeing the verts directly,
+	 * call this function to delete any special
+	 * vert data */
+	if (!dvert)
+		return;
+
+	/* Free any special data from the verts */
+	BKE_defvert_array_free_elems(dvert, totvert);
+
 	MEM_freeN(dvert);
 }
-

Modified: trunk/blender/source/blender/editors/sculpt_paint/paint_vertex.c
===================================================================
--- trunk/blender/source/blender/editors/sculpt_paint/paint_vertex.c	2013-02-11 03:01:50 UTC (rev 54448)
+++ trunk/blender/source/blender/editors/sculpt_paint/paint_vertex.c	2013-02-11 04:43:49 UTC (rev 54449)
@@ -3182,6 +3182,7 @@
 		VPaint *wp = ts->wpaint;
 		Object *ob = CTX_data_active_object(C);
 		Mesh *me = ob->data;
+		BKE_defvert_array_free_elems(me->dvert, me->totvert);
 		BKE_defvert_array_copy(me->dvert, wp->wpaint_prev, me->totvert);
 		free_wpaint_prev(wp);
 




More information about the Bf-blender-cvs mailing list