summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Objects/setobject.c12
1 files changed, 11 insertions, 1 deletions
diff --git a/Objects/setobject.c b/Objects/setobject.c
index 707ab95..d621647 100644
--- a/Objects/setobject.c
+++ b/Objects/setobject.c
@@ -142,7 +142,10 @@ set_insert_key(PySetObject *so, PyObject *key, Py_hash_t hash)
entry = &table[i];
if (entry->key == NULL)
- goto found_null;
+ goto found_null_first;
+
+ freeslot = NULL;
+ perturb = hash;
while (1) {
if (entry->hash == hash) {
@@ -207,6 +210,13 @@ set_insert_key(PySetObject *so, PyObject *key, Py_hash_t hash)
goto found_null;
}
+ found_null_first:
+ so->fill++;
+ so->used++;
+ entry->key = key;
+ entry->hash = hash;
+ return 0;
+
found_null:
if (freeslot == NULL) {
/* UNUSED */