const unsigned oldsize = dict->table_size + 1;
unsigned newsize = oldsize * 2;
- xbt_dictelm_t *currcell = (xbt_dictelm_t *) xbt_realloc((char *) dict->table, newsize * sizeof(xbt_dictelm_t));
- memset(&currcell[oldsize], 0, oldsize * sizeof(xbt_dictelm_t)); /* zero second half */
+ xbt_dictelm_t* newtable = (xbt_dictelm_t*)xbt_realloc((char*)dict->table, newsize * sizeof(xbt_dictelm_t));
+ memset(&newtable[oldsize], 0, oldsize * sizeof(xbt_dictelm_t)); /* zero second half */
newsize--;
dict->table_size = newsize;
- dict->table = currcell;
+ dict->table = newtable;
XBT_DEBUG("REHASH (%u->%u)", oldsize, newsize);
- for (unsigned i = 0; i < oldsize; i++, currcell++) {
+ for (unsigned i = 0; i < oldsize; i++) {
+ xbt_dictelm_t* currcell = &newtable[i];
if (*currcell == nullptr) /* empty cell */
continue;
xbt_dictelm_t *twincell = currcell + oldsize;
xbt_dictelm_t *pprev = currcell;
xbt_dictelm_t bucklet = *currcell;
- for (; bucklet != nullptr; bucklet = *pprev) {
+ while (bucklet != nullptr) {
/* Since we use "& size" instead of "%size" and since the size was doubled, each bucklet of this cell must either:
- stay in cell i (ie, currcell)
- go to the cell i+oldsize (ie, twincell) */
} else {
pprev = &bucklet->next;
}
+ bucklet = *pprev;
}
if (*currcell == nullptr) /* everything moved */