[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [56807] trunk/blender/source/blender/ freestyle/intern: Further fix for memory leaks in Freestyle Python API components:

Tamito Kajiyama rd6t-kjym at asahi-net.or.jp
Wed May 15 00:51:12 CEST 2013


Revision: 56807
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=56807
Author:   kjym3
Date:     2013-05-14 22:51:11 +0000 (Tue, 14 May 2013)
Log Message:
-----------
Further fix for memory leaks in Freestyle Python API components:
- StrokeAttribute thickness setter
- BezierCurve (used from within BezierCurveShader)
- Smoother (used from within SmoothingShader)

Modified Paths:
--------------
    trunk/blender/source/blender/freestyle/intern/geometry/Bezier.cpp
    trunk/blender/source/blender/freestyle/intern/python/BPy_StrokeAttribute.cpp
    trunk/blender/source/blender/freestyle/intern/stroke/AdvancedStrokeShaders.cpp
    trunk/blender/source/blender/freestyle/intern/stroke/AdvancedStrokeShaders.h

Modified: trunk/blender/source/blender/freestyle/intern/geometry/Bezier.cpp
===================================================================
--- trunk/blender/source/blender/freestyle/intern/geometry/Bezier.cpp	2013-05-14 22:16:18 UTC (rev 56806)
+++ trunk/blender/source/blender/freestyle/intern/geometry/Bezier.cpp	2013-05-14 22:51:11 UTC (rev 56807)
@@ -106,6 +106,11 @@
 
 BezierCurve::~BezierCurve()
 {
+	if (!_Segments.empty()) {
+		vector<BezierCurveSegment*>::iterator v, vend;
+		for (v = _Segments.begin(), vend = _Segments.end(); v != vend; ++v)
+			delete *v;
+	}
 	if (_currentSegment)
 		delete _currentSegment;
 }

Modified: trunk/blender/source/blender/freestyle/intern/python/BPy_StrokeAttribute.cpp
===================================================================
--- trunk/blender/source/blender/freestyle/intern/python/BPy_StrokeAttribute.cpp	2013-05-14 22:16:18 UTC (rev 56806)
+++ trunk/blender/source/blender/freestyle/intern/python/BPy_StrokeAttribute.cpp	2013-05-14 22:51:11 UTC (rev 56807)
@@ -526,13 +526,12 @@
 
 static int StrokeAttribute_color_set(BPy_StrokeAttribute *self, PyObject *value, void *UNUSED(closure))
 {
-	Vec3f *v = Vec3f_ptr_from_PyObject(value);
-	if (!v) {
+	float v[3];
+	if (!float_array_from_PyObject(value, v, 3)) {
 		PyErr_SetString(PyExc_ValueError, "value must be a 3-dimensional vector");
 		return -1;
 	}
-	self->sa->setColor(v->x(), v->y(), v->z());
-	delete v;
+	self->sa->setColor(v[0], v[1], v[2]);
 	return 0;
 }
 
@@ -551,12 +550,12 @@
 
 static int StrokeAttribute_thickness_set(BPy_StrokeAttribute *self, PyObject *value, void *UNUSED(closure))
 {
-	Vec2f *v = Vec2f_ptr_from_PyObject(value);
-	if (!v) {
+	float v[2];
+	if (!float_array_from_PyObject(value, v, 2)) {
 		PyErr_SetString(PyExc_ValueError, "value must be a 2-dimensional vector");
 		return -1;
 	}
-	self->sa->setThickness(v->x(), v->y());
+	self->sa->setThickness(v[0], v[1]);
 	return 0;
 }
 

Modified: trunk/blender/source/blender/freestyle/intern/stroke/AdvancedStrokeShaders.cpp
===================================================================
--- trunk/blender/source/blender/freestyle/intern/stroke/AdvancedStrokeShaders.cpp	2013-05-14 22:16:18 UTC (rev 56806)
+++ trunk/blender/source/blender/freestyle/intern/stroke/AdvancedStrokeShaders.cpp	2013-05-14 22:51:11 UTC (rev 56807)
@@ -214,6 +214,13 @@
 	_safeTest = (_nbVertices > 4);
 }
 
+Smoother::~Smoother()
+{
+	delete[] _vertex;
+	delete[] _curvature;
+	delete[] _normal;
+}
+
 void Smoother::smooth(int nbIteration, real iFactorPoint, real ifactorCurvature, real iFactorCurvatureDifference,
                       real iAnisoPoint, real iAnisoNormal, real iAnisoCurvature, real iCarricatureFactor)
 {

Modified: trunk/blender/source/blender/freestyle/intern/stroke/AdvancedStrokeShaders.h
===================================================================
--- trunk/blender/source/blender/freestyle/intern/stroke/AdvancedStrokeShaders.h	2013-05-14 22:16:18 UTC (rev 56806)
+++ trunk/blender/source/blender/freestyle/intern/stroke/AdvancedStrokeShaders.h	2013-05-14 22:51:11 UTC (rev 56807)
@@ -154,7 +154,7 @@
 public:
 	Smoother(Stroke &ioStroke);
 
-	virtual ~Smoother() {}
+	virtual ~Smoother();
 
 	void smooth(int nbIterations, real iFactorPoint, real ifactorCurvature, real iFactorCurvatureDifference,
 	            real iAnisoPoint, real iAnisoNormal, real iAnisoCurvature, real icarricatureFactor);




More information about the Bf-blender-cvs mailing list