From 11014aa34b26337023f53e75ebdc3432e7e116c2 Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Sun, 29 May 2011 11:05:52 +0000 Subject: access pythons code object directly rather than attribute access. --- source/gameengine/Expressions/PyObjectPlus.cpp | 3 +-- source/gameengine/GameLogic/SCA_PythonController.cpp | 9 +-------- 2 files changed, 2 insertions(+), 10 deletions(-) (limited to 'source/gameengine') diff --git a/source/gameengine/Expressions/PyObjectPlus.cpp b/source/gameengine/Expressions/PyObjectPlus.cpp index 65c20cad518..10906cdae02 100644 --- a/source/gameengine/Expressions/PyObjectPlus.cpp +++ b/source/gameengine/Expressions/PyObjectPlus.cpp @@ -1198,14 +1198,13 @@ void PyDebugLine() f_lineno= PyObject_GetAttrString(frame, "f_lineno"); f_code= PyObject_GetAttrString(frame, "f_code"); if (f_lineno && f_code) { - co_filename= PyObject_GetAttrString(f_code, "co_filename"); + co_filename= ((PyCodeObject *)f_code)->co_filename; /* borrow */ if (co_filename) { printf("\t%s:%d\n", _PyUnicode_AsString(co_filename), (int)PyLong_AsSsize_t(f_lineno)); Py_DECREF(f_lineno); Py_DECREF(f_code); - Py_DECREF(co_filename); Py_DECREF(frame); return; } diff --git a/source/gameengine/GameLogic/SCA_PythonController.cpp b/source/gameengine/GameLogic/SCA_PythonController.cpp index d0c1155de96..19ddce13757 100644 --- a/source/gameengine/GameLogic/SCA_PythonController.cpp +++ b/source/gameengine/GameLogic/SCA_PythonController.cpp @@ -357,14 +357,7 @@ bool SCA_PythonController::Import() m_function_argc = 0; /* rare cases this could be a function that isnt defined in python, assume zero args */ if (PyFunction_Check(m_function)) { - PyObject *py_arg_count = PyObject_GetAttrString(PyFunction_GET_CODE(m_function), "co_argcount"); - if(py_arg_count) { - m_function_argc = PyLong_AsLong(py_arg_count); - Py_DECREF(py_arg_count); - } - else { - PyErr_Clear(); /* unlikely to fail but just incase */ - } + m_function_argc= ((PyCodeObject *)PyFunction_GET_CODE(m_function))->co_argcount; } if(m_function_argc > 1) { -- cgit v1.2.3