(original) (raw)

changeset: 84509:ba766323b53a user: Victor Stinner victor.stinner@gmail.com date: Mon Jul 08 22:19:20 2013 +0200 files: Objects/dictobject.c description: Issue #18408: Fix PyDict_New() to handle correctly new_keys_object() failure (MemoryError). diff -r 111c2a070f28 -r ba766323b53a Objects/dictobject.c --- a/Objects/dictobject.c Mon Jul 08 22:17:52 2013 +0200 +++ b/Objects/dictobject.c Mon Jul 08 22:19:20 2013 +0200 @@ -389,6 +389,7 @@ new_dict(PyDictKeysObject *keys, PyObject **values) { PyDictObject *mp; + assert(keys != NULL); if (numfree) { mp = free_list[--numfree]; assert (mp != NULL); @@ -431,7 +432,10 @@ 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); } /* /victor.stinner@gmail.com