diff options
author | Henning Baldersheim <balder@yahoo-inc.com> | 2017-03-10 15:32:30 +0100 |
---|---|---|
committer | Henning Baldersheim <balder@yahoo-inc.com> | 2017-03-10 15:32:30 +0100 |
commit | 1fa0f497de0a95839bef409acf05b3fa4dc60158 (patch) | |
tree | 38324c025d4ab2ab195b4f9d7940c1947437d15e /searchlib | |
parent | 8d4c358fbdffe099ca3c164f156286563c2aa59b (diff) |
Easy readability of merge loop.
Diffstat (limited to 'searchlib')
-rw-r--r-- | searchlib/src/vespa/searchlib/queryeval/searchiterator.cpp | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/searchlib/src/vespa/searchlib/queryeval/searchiterator.cpp b/searchlib/src/vespa/searchlib/queryeval/searchiterator.cpp index 9860105ddc5..83c29e45663 100644 --- a/searchlib/src/vespa/searchlib/queryeval/searchiterator.cpp +++ b/searchlib/src/vespa/searchlib/queryeval/searchiterator.cpp @@ -61,7 +61,7 @@ SearchIterator::and_hits_into(BitVector &result, uint32_t begin_id) { uint32_t docidA = begin_id - 1; uint32_t docidB = result.getNextTrueBit(begin_id); - while (!isAtEnd(docidB)) { + while (!isAtEnd(docidB) && !isAtEnd(docidA)) { if (docidA < docidB) { if (seek(docidB)) { docidA = docidB; @@ -70,11 +70,12 @@ SearchIterator::and_hits_into(BitVector &result, uint32_t begin_id) } } else if (docidA > docidB) { result.clearInterval(docidB, docidA); - docidB = (! isAtEnd(docidA)) ? result.getNextTrueBit(docidA) : getEndId(); + docidB = result.getNextTrueBit(docidA); } else { docidB = result.getNextTrueBit(docidB+1); } } + result.clearInterval(docidB, result.size()); } vespalib::string |