dictionary size was comparing ma_size, the hash table size, which is
always a power of two, rather than ma_used, wich changes on each
insertion or deletion. Fixed this.
typedef struct {
PyObject_HEAD
dictobject *di_dict;
- int di_size;
+ int di_used;
int di_pos;
binaryfunc di_select;
} dictiterobject;
return NULL;
Py_INCREF(dict);
di->di_dict = dict;
- di->di_size = dict->ma_size;
+ di->di_used = dict->ma_used;
di->di_pos = 0;
di->di_select = select;
return (PyObject *)di;
{
PyObject *key, *value;
- if (di->di_size != di->di_dict->ma_size) {
+ if (di->di_used != di->di_dict->ma_used) {
PyErr_SetString(PyExc_RuntimeError,
"dictionary changed size during iteration");
return NULL;
{
PyObject *key, *value;
- if (di->di_size != di->di_dict->ma_size) {
+ if (di->di_used != di->di_dict->ma_used) {
PyErr_SetString(PyExc_RuntimeError,
"dictionary changed size during iteration");
return NULL;