From 69b8d6a4b505d4ac5d55983a35415f3e6856396c Mon Sep 17 00:00:00 2001 From: rdb Date: Mon, 6 Jul 2015 10:31:33 +0200 Subject: [PATCH] Fix memory leak in tuple-returning getters --- dtool/src/interrogate/interfaceMakerPythonNative.cxx | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/dtool/src/interrogate/interfaceMakerPythonNative.cxx b/dtool/src/interrogate/interfaceMakerPythonNative.cxx index 30bb59d8a5..ec7e84adfe 100644 --- a/dtool/src/interrogate/interfaceMakerPythonNative.cxx +++ b/dtool/src/interrogate/interfaceMakerPythonNative.cxx @@ -6113,7 +6113,7 @@ write_make_seq(ostream &out, Object *obj, const std::string &ClassName, << " return NULL;\n" << " }\n" << "\n" - << " PyObject *getter = PyObject_GetAttrString(self, \"" << element_name << "\");\n" + << " PyObject *getter = PyDict_GetItemString(Dtool_" << ClassName << "._PyType.tp_dict, \"" << element_name << "\");\n" << " if (getter == (PyObject *)NULL) {\n" << " return NULL;\n" << " }\n" @@ -6127,7 +6127,7 @@ write_make_seq(ostream &out, Object *obj, const std::string &ClassName, << "#else\n" << " PyObject *index = PyInt_FromSsize_t(i);\n" << "#endif\n" - << " PyObject *value = PyObject_CallFunctionObjArgs(getter, index, NULL);\n" + << " PyObject *value = PyObject_CallFunctionObjArgs(getter, self, index, NULL);\n" << " PyTuple_SET_ITEM(tuple, i, value);\n" << " Py_DECREF(index);\n" << " }\n"