[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [53353] trunk/blender/source/blender/ editors/sculpt_paint/paint_vertex.c: fix for memory leak with weight painting and ensure vertex group is created before use .

Campbell Barton ideasman42 at gmail.com
Fri Dec 28 10:00:10 CET 2012


Revision: 53353
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=53353
Author:   campbellbarton
Date:     2012-12-28 09:00:05 +0000 (Fri, 28 Dec 2012)
Log Message:
-----------
fix for memory leak with weight painting and ensure vertex group is created before use.

Modified Paths:
--------------
    trunk/blender/source/blender/editors/sculpt_paint/paint_vertex.c

Modified: trunk/blender/source/blender/editors/sculpt_paint/paint_vertex.c
===================================================================
--- trunk/blender/source/blender/editors/sculpt_paint/paint_vertex.c	2012-12-28 02:45:10 UTC (rev 53352)
+++ trunk/blender/source/blender/editors/sculpt_paint/paint_vertex.c	2012-12-28 09:00:05 UTC (rev 53353)
@@ -405,7 +405,7 @@
 static void free_wpaint_prev(VPaint *vp)
 {
 	if (vp->wpaint_prev) {
-		MEM_freeN(vp->wpaint_prev);
+		free_dverts(vp->wpaint_prev, vp->tot);
 		vp->wpaint_prev = NULL;
 		vp->tot = 0;
 	}
@@ -2498,7 +2498,7 @@
 	RNA_def_collection_runtime(ot->srna, "stroke", &RNA_OperatorStrokeElement, "Stroke", "");
 }
 
-static int weight_paint_set_exec(bContext *C, wmOperator *UNUSED(op))
+static int weight_paint_set_exec(bContext *C, wmOperator *op)
 {
 	struct Scene *scene = CTX_data_scene(C);
 	Object *obact = CTX_data_active_object(C);
@@ -2506,6 +2506,10 @@
 	Brush *brush = paint_brush(&ts->wpaint->paint);
 	float vgroup_weight = BKE_brush_weight_get(scene, brush);
 
+	if (wpaint_ensure_data(C, op) == FALSE) {
+		return OPERATOR_CANCELLED;
+	}
+
 	wpaint_fill(scene->toolsettings->wpaint, obact, vgroup_weight);
 	ED_region_tag_redraw(CTX_wm_region(C)); /* XXX - should redraw all 3D views */
 	return OPERATOR_FINISHED;
@@ -3217,6 +3221,10 @@
 {
 	int ret;
 
+	if (wpaint_ensure_data(C, op) == FALSE) {
+		return OPERATOR_CANCELLED;
+	}
+
 	ret = WM_gesture_straightline_invoke(C, op, event);
 	if (ret & OPERATOR_RUNNING_MODAL) {
 		struct ARegion *ar = CTX_wm_region(C);




More information about the Bf-blender-cvs mailing list