[Bf-blender-cvs] [2c0e32f] master: Fix for leak in freestyle FitCurve

Campbell Barton noreply at git.blender.org
Tue Apr 1 00:15:36 CEST 2014


Commit: 2c0e32f4e4af6303c7215f2910b848937e2a3896
Author: Campbell Barton
Date:   Tue Apr 1 09:14:59 2014 +1100
https://developer.blender.org/rB2c0e32f4e4af6303c7215f2910b848937e2a3896

Fix for leak in freestyle FitCurve

===================================================================

M	source/blender/freestyle/intern/geometry/FitCurve.cpp

===================================================================

diff --git a/source/blender/freestyle/intern/geometry/FitCurve.cpp b/source/blender/freestyle/intern/geometry/FitCurve.cpp
index e517bf4..fbfa5b3 100644
--- a/source/blender/freestyle/intern/geometry/FitCurve.cpp
+++ b/source/blender/freestyle/intern/geometry/FitCurve.cpp
@@ -557,17 +557,20 @@ void FitCurveWrapper::FitCubic(Vector2 *d, int first, int last, Vector2 tHat1, V
 	if (maxError < iterationError) {
 		for (i = 0; i < maxIterations; i++) {
 			uPrime = Reparameterize(d, first, last, u, bezCurve);
-			bezCurve = GenerateBezier(d, first, last, uPrime, tHat1, tHat2);
-			maxError = ComputeMaxError(d, first, last,
-			bezCurve, uPrime, &splitPoint);
+
+			free((void *)u);
+			free((void *)bezCurve);
+			u = uPrime;
+
+			bezCurve = GenerateBezier(d, first, last, u, tHat1, tHat2);
+			maxError = ComputeMaxError(d, first, last, bezCurve, u, &splitPoint);
+
 			if (maxError < error) {
 				DrawBezierCurve(3, bezCurve);
 				free((void *)u);
 				free((void *)bezCurve);
 				return;
 			}
-			free((void *)u);
-			u = uPrime;
 		}
 	}




More information about the Bf-blender-cvs mailing list