mirror of https://github.com/python/cpython
#11335: Fix memory leak after key function failure in sort
This commit is contained in:
parent
0d5e52d346
commit
eda70b81d3
|
@ -111,6 +111,12 @@ class TestBase(unittest.TestCase):
|
|||
s.sort(key=CmpToKey(lambda a, b: int(random.random() * 3) - 1))
|
||||
check("an insane function left some permutation", x, s)
|
||||
|
||||
if len(x) >= 2:
|
||||
def bad_key(x):
|
||||
raise RuntimeError
|
||||
s = x[:]
|
||||
self.assertRaises(RuntimeError, s.sort, key=bad_key)
|
||||
|
||||
x = [Complains(i) for i in x]
|
||||
s = x[:]
|
||||
random.shuffle(s)
|
||||
|
|
|
@ -1944,6 +1944,8 @@ listsort(PyListObject *self, PyObject *args, PyObject *kwds)
|
|||
if (keys[i] == NULL) {
|
||||
for (i=i-1 ; i>=0 ; i--)
|
||||
Py_DECREF(keys[i]);
|
||||
if (keys != &ms.temparray[saved_ob_size+1])
|
||||
PyMem_FREE(keys);
|
||||
goto keyfunc_fail;
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue