From c9b7f51ec203ea5148014741d1fefe1a0faeefa1 Mon Sep 17 00:00:00 2001 From: Victor Stinner Date: Mon, 8 Jul 2013 22:19:20 +0200 Subject: Issue #18408: Fix PyDict_New() to handle correctly new_keys_object() failure (MemoryError). --- Objects/dictobject.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/Objects/dictobject.c b/Objects/dictobject.c index 250c890..9d8696a 100644 --- a/Objects/dictobject.c +++ b/Objects/dictobject.c @@ -389,6 +389,7 @@ static PyObject * new_dict(PyDictKeysObject *keys, PyObject **values) { PyDictObject *mp; + assert(keys != NULL); if (numfree) { mp = free_list[--numfree]; assert (mp != NULL); @@ -431,7 +432,10 @@ new_dict_with_shared_keys(PyDictKeysObject *keys) PyObject * PyDict_New(void) { - return new_dict(new_keys_object(PyDict_MINSIZE_COMBINED), NULL); + PyDictKeysObject *keys = new_keys_object(PyDict_MINSIZE_COMBINED); + if (keys == NULL) + return NULL; + return new_dict(keys, NULL); } /* -- cgit v0.12