[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