From: Victor Stinner Date: Mon, 8 Jul 2013 20:19:20 +0000 (+0200) Subject: Issue #18408: Fix PyDict_New() to handle correctly new_keys_object() failure X-Git-Tag: v3.4.0a1~287 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=c9b7f51ec203ea5148014741d1fefe1a0faeefa1;p=python Issue #18408: Fix PyDict_New() to handle correctly new_keys_object() failure (MemoryError). --- diff --git a/Objects/dictobject.c b/Objects/dictobject.c index 250c890cd7..9d8696a89e 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); } /*