aboutsummaryrefslogtreecommitdiffstats
path: root/searchlib
diff options
context:
space:
mode:
authorHenning Baldersheim <balder@yahoo-inc.com>2017-03-10 15:32:30 +0100
committerHenning Baldersheim <balder@yahoo-inc.com>2017-03-10 15:32:30 +0100
commit1fa0f497de0a95839bef409acf05b3fa4dc60158 (patch)
tree38324c025d4ab2ab195b4f9d7940c1947437d15e /searchlib
parent8d4c358fbdffe099ca3c164f156286563c2aa59b (diff)
Easy readability of merge loop.
Diffstat (limited to 'searchlib')
-rw-r--r--searchlib/src/vespa/searchlib/queryeval/searchiterator.cpp5
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