in HashRange, keep p_beg always pointing to the same bucket as p_node

master
Daniel Kolesa 2015-06-25 01:19:21 +01:00
parent a4d33c5cd7
commit 501beee633
1 changed files with 2 additions and 4 deletions

View File

@ -54,10 +54,7 @@ private:
void advance() { void advance() {
while ((p_beg != p_end) && !p_beg[0]) while ((p_beg != p_end) && !p_beg[0])
++p_beg; ++p_beg;
if (p_beg != p_end) { if (p_beg != p_end) p_node = p_beg[0];
p_node = p_beg[0];
++p_beg;
}
} }
public: public:
HashRange(): p_beg(), p_end(), p_node() {} HashRange(): p_beg(), p_end(), p_node() {}
@ -89,6 +86,7 @@ public:
if (!p_node) return false; if (!p_node) return false;
p_node = p_node->next; p_node = p_node->next;
if (p_node) return true; if (p_node) return true;
++p_beg;
advance(); advance();
return true; return true;
} }