Skip to content

Commit fde27e0

Browse files
author
georg.brandl
committed
#1782: don't leak in error case in PyModule_AddXxxConstant. Patch by Hrvoje Nikšić.
git-svn-id: http://svn.python.org/projects/python/trunk@60084 6015fed2-1504-0410-9fe1-9d1591cc4771
1 parent fd35edd commit fde27e0

1 file changed

Lines changed: 14 additions & 2 deletions

File tree

Python/modsupport.c

Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -621,11 +621,23 @@ PyModule_AddObject(PyObject *m, const char *name, PyObject *o)
621621
int
622622
PyModule_AddIntConstant(PyObject *m, const char *name, long value)
623623
{
624-
return PyModule_AddObject(m, name, PyInt_FromLong(value));
624+
PyObject *o = PyInt_FromLong(value);
625+
if (!o)
626+
return -1;
627+
if (PyModule_AddObject(m, name, o) == 0)
628+
return 0;
629+
Py_DECREF(o);
630+
return -1;
625631
}
626632

627633
int
628634
PyModule_AddStringConstant(PyObject *m, const char *name, const char *value)
629635
{
630-
return PyModule_AddObject(m, name, PyString_FromString(value));
636+
PyObject *o = PyString_FromString(value);
637+
if (!o)
638+
return -1;
639+
if (PyModule_AddObject(m, name, o) == 0)
640+
return 0;
641+
Py_DECREF(o);
642+
return -1;
631643
}

0 commit comments

Comments
 (0)