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:
committed by
antirez
parent
8c4ff679fe
commit
fd22106a98
@@ -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;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user