[Python-checkins] cpython: Issue #28077: find_empty_slot() only supports combined dict

victor.stinner python-checkins at python.org
Mon Sep 12 08:23:06 EDT 2016


https://hg.python.org/cpython/rev/0e986b81cc1c
changeset: 103707:0e986b81cc1c
user: Victor Stinner <victor.stinner at gmail.com>
date: Mon Sep 12 14:17:40 2016 +0200
summary:
 Issue #28077: find_empty_slot() only supports combined dict
files:
 Objects/dictobject.c | 10 +++++++---
 1 files changed, 7 insertions(+), 3 deletions(-)
diff --git a/Objects/dictobject.c b/Objects/dictobject.c
--- a/Objects/dictobject.c
+++ b/Objects/dictobject.c
@@ -984,8 +984,9 @@
 }
 
 /* Internal function to find slot for an item from its hash
- * when it is known that the key is not present in the dict.
- */
+ when it is known that the key is not present in the dict.
+
+ The dict must be combined. */
 static Py_ssize_t
 find_empty_slot(PyDictObject *mp, PyObject *key, Py_hash_t hash,
 PyObject ***value_addr, Py_ssize_t *hashpos)
@@ -995,8 +996,10 @@
 Py_ssize_t ix;
 PyDictKeyEntry *ep, *ep0 = DK_ENTRIES(mp->ma_keys);
 
+ assert(!_PyDict_HasSplitTable(mp));
 assert(hashpos != NULL);
 assert(key != NULL);
+
 if (!PyUnicode_CheckExact(key))
 mp->ma_keys->dk_lookup = lookdict;
 i = hash & mask;
@@ -2672,8 +2675,9 @@
 val = defaultobj;
 if (mp->ma_keys->dk_usable <= 0) {
 /* Need to resize. */
- if (insertion_resize(mp) < 0)
+ if (insertion_resize(mp) < 0) {
 return NULL;
+ }
 find_empty_slot(mp, key, hash, &value_addr, &hashpos);
 }
 ix = mp->ma_keys->dk_nentries;
-- 
Repository URL: https://hg.python.org/cpython


More information about the Python-checkins mailing list

AltStyle によって変換されたページ (->オリジナル) /