diff options
Diffstat (limited to 'vespalib/src/vespa/vespalib/btree/btreeiterator.h')
-rw-r--r-- | vespalib/src/vespa/vespalib/btree/btreeiterator.h | 16 |
1 files changed, 12 insertions, 4 deletions
diff --git a/vespalib/src/vespa/vespalib/btree/btreeiterator.h b/vespalib/src/vespa/vespalib/btree/btreeiterator.h index bbee8746d6f..21d232db31a 100644 --- a/vespalib/src/vespa/vespalib/btree/btreeiterator.h +++ b/vespalib/src/vespa/vespalib/btree/btreeiterator.h @@ -348,10 +348,20 @@ public: bool operator==(const BTreeIteratorBase & rhs) const { - if (_leaf.getNode() != rhs._leaf.getNode() || - _leaf.getIdx() != rhs._leaf.getIdx()) { + if (_leaf.getIdx() != rhs._leaf.getIdx()) { return false; } + if (_leaf.getNode() == rhs._leaf.getNode()) { + return true; + } + if ((_leaf.getNode() == nullptr) || (rhs._leaf.getNode() == nullptr) || (_pathSize != rhs._pathSize)) { + return false; + } + for (uint32_t level = 0; level < _pathSize; ++level) { + if (_path[level].getIdx() != rhs._path[level].getIdx()) { + return false; + } + } return true; } @@ -521,7 +531,6 @@ public: uint32_t eidx; do { --level; - assert(_path[level].getNode() == end_itr._path[level].getNode()); idx = _path[level].getIdx(); eidx = end_itr._path[level].getIdx(); if (idx > eidx) { @@ -545,7 +554,6 @@ public: return; } else { // Lowest shared node is a leaf node. - assert(_leaf.getNode() == end_itr._leaf.getNode()); } } uint32_t idx = _leaf.getIdx(); |