mirror of
https://github.com/python/cpython.git
synced 2025-10-10 00:43:41 +00:00
complex_new(): This could leak when the argument was neither string nor
number. This accounts for the 2 refcount leaks per test_complex run Michael Hudson discovered (I figured only I would have the stomach to look for leaks in floating-point code <wink>).
This commit is contained in:
parent
90b182c16c
commit
465fa3dac4
2 changed files with 6 additions and 0 deletions
|
@ -12,6 +12,9 @@ What's New in Python 2.4 alpha 1?
|
||||||
Core and builtins
|
Core and builtins
|
||||||
-----------------
|
-----------------
|
||||||
|
|
||||||
|
- complex(obj) could leak a little memory if obj wasn't a string or
|
||||||
|
number.
|
||||||
|
|
||||||
- zip() with no arguments now returns an empty list instead of raising
|
- zip() with no arguments now returns an empty list instead of raising
|
||||||
a TypeError exception.
|
a TypeError exception.
|
||||||
|
|
||||||
|
|
|
@ -882,6 +882,9 @@ complex_new(PyTypeObject *type, PyObject *args, PyObject *kwds)
|
||||||
((i != NULL) && (nbi == NULL || nbi->nb_float == NULL))) {
|
((i != NULL) && (nbi == NULL || nbi->nb_float == NULL))) {
|
||||||
PyErr_SetString(PyExc_TypeError,
|
PyErr_SetString(PyExc_TypeError,
|
||||||
"complex() argument must be a string or a number");
|
"complex() argument must be a string or a number");
|
||||||
|
if (own_r) {
|
||||||
|
Py_DECREF(r);
|
||||||
|
}
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
if (PyComplex_Check(r)) {
|
if (PyComplex_Check(r)) {
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue