mirror of
https://github.com/python/cpython.git
synced 2025-09-29 19:56:59 +00:00
[3.6] bpo-30936: Fix a reference leak in json when fail to sort keys. (GH-2712). (#2727)
(cherry picked from commit 49f6449ef4
)
This commit is contained in:
parent
28343e3392
commit
a819e5e1e6
2 changed files with 7 additions and 1 deletions
|
@ -44,3 +44,7 @@ class TestEncode(CTest):
|
|||
self.assertRaises(ZeroDivisionError, test, 'check_circular')
|
||||
self.assertRaises(ZeroDivisionError, test, 'allow_nan')
|
||||
self.assertRaises(ZeroDivisionError, test, 'sort_keys')
|
||||
|
||||
def test_unsortable_keys(self):
|
||||
with self.assertRaises(TypeError):
|
||||
self.json.encoder.JSONEncoder(sort_keys=True).encode({'a': 1, 1: 'a'})
|
||||
|
|
|
@ -1601,8 +1601,10 @@ encoder_listencode_dict(PyEncoderObject *s, _PyAccu *acc,
|
|||
if (items == NULL)
|
||||
goto bail;
|
||||
sortkeys = PyObject_IsTrue(s->sort_keys);
|
||||
if (sortkeys < 0 || (sortkeys && PyList_Sort(items) < 0))
|
||||
if (sortkeys < 0 || (sortkeys && PyList_Sort(items) < 0)) {
|
||||
Py_DECREF(items);
|
||||
goto bail;
|
||||
}
|
||||
it = PyObject_GetIter(items);
|
||||
Py_DECREF(items);
|
||||
if (it == NULL)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue