From c211a0a00b286188b8a4182e924511bdcbb85cda Mon Sep 17 00:00:00 2001 From: Georg Brandl Date: Sat, 19 Jan 2008 18:02:46 +0000 Subject: [PATCH] =?UTF-8?q?#1782:=20don't=20leak=20in=20error=20case=20in?= =?UTF-8?q?=20PyModule=5FAddXxxConstant.=20Patch=20by=20Hrvoje=20Nik=C5=A1?= =?UTF-8?q?i=C4=87.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Python/modsupport.c | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/Python/modsupport.c b/Python/modsupport.c index 1aa3df2852c..d54158f2122 100644 --- a/Python/modsupport.c +++ b/Python/modsupport.c @@ -621,11 +621,23 @@ PyModule_AddObject(PyObject *m, const char *name, PyObject *o) int PyModule_AddIntConstant(PyObject *m, const char *name, long value) { - return PyModule_AddObject(m, name, PyInt_FromLong(value)); + PyObject *o = PyInt_FromLong(value); + if (!o) + return -1; + if (PyModule_AddObject(m, name, o) == 0) + return 0; + Py_DECREF(o); + return -1; } int PyModule_AddStringConstant(PyObject *m, const char *name, const char *value) { - return PyModule_AddObject(m, name, PyString_FromString(value)); + PyObject *o = PyString_FromString(value); + if (!o) + return -1; + if (PyModule_AddObject(m, name, o) == 0) + return 0; + Py_DECREF(o); + return -1; }