summaryrefslogtreecommitdiffstats
path: root/Objects
diff options
context:
space:
mode:
authorMark Dickinson <mdickinson@enthought.com>2012-09-27 18:38:59 (GMT)
committerMark Dickinson <mdickinson@enthought.com>2012-09-27 18:38:59 (GMT)
commit7c95bb35e40a1bb598a259248b5a9880d8716556 (patch)
tree5891ec02508da616ea5bc98e31ac75d9c26663e4 /Objects
parent3658cb3012fa14e4594ed62a227115fbbd15da26 (diff)
downloadcpython-7c95bb35e40a1bb598a259248b5a9880d8716556.zip
cpython-7c95bb35e40a1bb598a259248b5a9880d8716556.tar.gz
cpython-7c95bb35e40a1bb598a259248b5a9880d8716556.tar.bz2
Issue #16060: Fix a double DECREF in int() implementation. Thanks Serhiy Storchaka.
Diffstat (limited to 'Objects')
-rw-r--r--Objects/abstract.c7
1 files changed, 3 insertions, 4 deletions
diff --git a/Objects/abstract.c b/Objects/abstract.c
index ed5e196..a2737dd 100644
--- a/Objects/abstract.c
+++ b/Objects/abstract.c
@@ -1228,11 +1228,10 @@ convert_integral_to_int(PyObject *integral, const char *error_format)
nb = Py_TYPE(integral)->tp_as_number;
if (nb->nb_int) {
PyObject *as_int = nb->nb_int(integral);
- Py_DECREF(integral);
- if (!as_int)
- return NULL;
- if (PyLong_Check(as_int))
+ if (!as_int || PyLong_Check(as_int)) {
+ Py_DECREF(integral);
return as_int;
+ }
Py_DECREF(as_int);
}
PyErr_Format(PyExc_TypeError, error_format, Py_TYPE(integral)->tp_name);