diff -r c45088b19342 Objects/dictobject.c --- a/Objects/dictobject.c Sun Sep 11 16:47:59 2016 +0300 +++ b/Objects/dictobject.c Sun Sep 11 22:40:10 2016 +0800 @@ -992,7 +992,7 @@ { size_t i, perturb; size_t mask = DK_MASK(mp->ma_keys); - Py_ssize_t ix; + Py_ssize_t ix, nentries = mp->ma_keys->dk_nentries; PyDictKeyEntry *ep, *ep0 = DK_ENTRIES(mp->ma_keys); assert(hashpos != NULL); @@ -1005,11 +1005,11 @@ i = (i << 2) + i + perturb + 1; ix = dk_get_index(mp->ma_keys, i & mask); } - ep = &ep0[mp->ma_keys->dk_nentries]; + ep = &ep0[nentries]; *hashpos = i & mask; assert(ep->me_value == NULL); if (mp->ma_values) - *value_addr = &mp->ma_values[ix]; + *value_addr = &mp->ma_values[nentries]; else *value_addr = &ep->me_value; return ix;