[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [19277] branches/soc-2008-mxcurioni/source /blender/freestyle/intern/python/BPy_Convert.cpp: Fixed memory leaks in passing vectors from Python to C++.
Tamito Kajiyama
rd6t-kjym at asahi-net.or.jp
Fri Mar 13 20:27:01 CET 2009
Revision: 19277
http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=19277
Author: kjym3
Date: 2009-03-13 20:27:00 +0100 (Fri, 13 Mar 2009)
Log Message:
-----------
Fixed memory leaks in passing vectors from Python to C++.
Modified Paths:
--------------
branches/soc-2008-mxcurioni/source/blender/freestyle/intern/python/BPy_Convert.cpp
Modified: branches/soc-2008-mxcurioni/source/blender/freestyle/intern/python/BPy_Convert.cpp
===================================================================
--- branches/soc-2008-mxcurioni/source/blender/freestyle/intern/python/BPy_Convert.cpp 2009-03-13 19:24:05 UTC (rev 19276)
+++ branches/soc-2008-mxcurioni/source/blender/freestyle/intern/python/BPy_Convert.cpp 2009-03-13 19:27:00 UTC (rev 19277)
@@ -332,24 +332,49 @@
}
Vec2f * Vec2f_ptr_from_Vector( PyObject* obj ) {
- float x = PyFloat_AsDouble( PyObject_GetAttrString(obj,"x") );
- float y = PyFloat_AsDouble( PyObject_GetAttrString(obj,"y") );
+ PyObject *v;
+ if (!VectorObject_Check(obj) || ((VectorObject *)obj)->size != 2)
+ return NULL;
+ v = PyObject_GetAttrString(obj,"x");
+ float x = PyFloat_AsDouble( v );
+ Py_DECREF( v );
+ v = PyObject_GetAttrString(obj,"y");
+ float y = PyFloat_AsDouble( v );
+ Py_DECREF( v );
return new Vec2f(x,y);
}
Vec3f * Vec3f_ptr_from_Vector( PyObject* obj ) {
- float x = PyFloat_AsDouble( PyObject_GetAttrString(obj,"x") );
- float y = PyFloat_AsDouble( PyObject_GetAttrString(obj,"y") );
- float z = PyFloat_AsDouble( PyObject_GetAttrString(obj,"z") );
+ PyObject *v;
+ if (!VectorObject_Check(obj) || ((VectorObject *)obj)->size != 3)
+ return NULL;
+ v = PyObject_GetAttrString(obj,"x");
+ float x = PyFloat_AsDouble( v );
+ Py_DECREF( v );
+ v = PyObject_GetAttrString(obj,"y");
+ float y = PyFloat_AsDouble( v );
+ Py_DECREF( v );
+ v = PyObject_GetAttrString(obj,"z");
+ float z = PyFloat_AsDouble( v );
+ Py_DECREF( v );
return new Vec3f(x,y,z);
}
Vec3r * Vec3r_ptr_from_Vector( PyObject* obj ) {
- double x = PyFloat_AsDouble( PyObject_GetAttrString(obj,"x") );
- double y = PyFloat_AsDouble( PyObject_GetAttrString(obj,"y") );
- double z = PyFloat_AsDouble( PyObject_GetAttrString(obj,"z") );
+ PyObject *v;
+ if (!VectorObject_Check(obj) || ((VectorObject *)obj)->size != 3)
+ return NULL;
+ v = PyObject_GetAttrString(obj,"x");
+ double x = PyFloat_AsDouble( v );
+ Py_DECREF( v );
+ v = PyObject_GetAttrString(obj,"y");
+ double y = PyFloat_AsDouble( v );
+ Py_DECREF( v );
+ v = PyObject_GetAttrString(obj,"z");
+ double z = PyFloat_AsDouble( v );
+ Py_DECREF( v );
return new Vec3r(x,y,z);
}
More information about the Bf-blender-cvs
mailing list