From 8c5597eb4964086c715b7d0038ddb4c6cb718296 Mon Sep 17 00:00:00 2001 From: Tamito Kajiyama Date: Tue, 5 Nov 2013 00:51:59 +0000 Subject: Additional code improvements: avoid unnecessary Python object allocations in Freestyle. --- .../blender/freestyle/intern/python/Director.cpp | 28 ++++++++++++---------- 1 file changed, 16 insertions(+), 12 deletions(-) (limited to 'source/blender/freestyle/intern/python/Director.cpp') diff --git a/source/blender/freestyle/intern/python/Director.cpp b/source/blender/freestyle/intern/python/Director.cpp index cd6f9da3e05..011609bb343 100644 --- a/source/blender/freestyle/intern/python/Director.cpp +++ b/source/blender/freestyle/intern/python/Director.cpp @@ -251,14 +251,16 @@ int Director_BPy_UnaryFunction0D___call__(void *uf0D, PyObject *obj, Interface0D ((UnaryFunction0D *)uf0D)->result = PyLong_AsLong(result); } else if (BPy_UnaryFunction0DVec2f_Check(obj)) { - Vec2f *v = Vec2f_ptr_from_Vector(result); - ((UnaryFunction0D *)uf0D)->result = *v; - delete v; + Vec2f vec; + if (!Vec2f_ptr_from_Vector(result, &vec)) + return -1; + ((UnaryFunction0D *)uf0D)->result = vec; } else if (BPy_UnaryFunction0DVec3f_Check(obj)) { - Vec3f *v = Vec3f_ptr_from_Vector(result); - ((UnaryFunction0D *)uf0D)->result = *v; - delete v; + Vec3f vec; + if (!Vec3f_ptr_from_Vector(result, &vec)) + return -1; + ((UnaryFunction0D *)uf0D)->result = vec; } else if (BPy_UnaryFunction0DVectorViewShape_Check(obj)) { vector vec; @@ -301,14 +303,16 @@ int Director_BPy_UnaryFunction1D___call__(void *uf1D, PyObject *obj, Interface1D ((UnaryFunction1D *)uf1D)->result = PyLong_AsLong(result); } else if (BPy_UnaryFunction1DVec2f_Check(obj)) { - Vec2f *v = Vec2f_ptr_from_Vector(result); - ((UnaryFunction1D *)uf1D)->result = *v; - delete v; + Vec2f vec; + if (!Vec2f_ptr_from_Vector(result, &vec)) + return -1; + ((UnaryFunction1D *)uf1D)->result = vec; } else if (BPy_UnaryFunction1DVec3f_Check(obj)) { - Vec3f *v = Vec3f_ptr_from_Vector(result); - ((UnaryFunction1D *)uf1D)->result = *v; - delete v; + Vec3f vec; + if (!Vec3f_ptr_from_Vector(result, &vec)) + return -1; + ((UnaryFunction1D *)uf1D)->result = vec; } else if (BPy_UnaryFunction1DVectorViewShape_Check(obj)) { vector vec; -- cgit v1.2.3