]> granicus.if.org Git - python/commitdiff
Issue #18408: Fix PyDict_New() to handle correctly new_keys_object() failure
authorVictor Stinner <victor.stinner@gmail.com>
Mon, 8 Jul 2013 20:19:20 +0000 (22:19 +0200)
committerVictor Stinner <victor.stinner@gmail.com>
Mon, 8 Jul 2013 20:19:20 +0000 (22:19 +0200)
(MemoryError).

Objects/dictobject.c

index 250c890cd763bed960169830b81f811eae11c61a..9d8696a89e675e5a0e57c006ddd41a3a703e7c29 100644 (file)
@@ -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);
 }
 
 /*