Fix error in scan algorithm

The irrelevant bits shouldn't be masked to 1. This can result in slots being
skipped when the hash table is resized between calls to the iterator.
This commit is contained in:
Pieter Noordhuis 2013-04-23 10:02:36 -07:00 committed by antirez
parent 7a6cfb18f3
commit b63fbea5e4

View File

@ -729,14 +729,6 @@ unsigned long dictScan(dict *d,
v++;
v = rev(v);
/* Only preprare cursor for the next iteration when it is non-zero,
* so that 0 can be used as end-of-scan sentinel. */
if (v) {
/* Set unmasked bits so the cursor will keep its position
* regardless of the mask in the next iterations */
v |= ~m0;
}
return v;
}