Return the correct iterator from ChunkedVector::erase()
When a chunk is removed entirely it should return an iterator to the first element in the next chunk, not the last.
This commit is contained in:
parent
4df552ba2d
commit
f9364b50a4
|
@ -151,7 +151,7 @@ ChunkedRangeVector::iterator ChunkedRangeVector::erase(iterator pos)
|
|||
if (chunk.data.size() == 0) {
|
||||
pos.m_outer = m_data.erase(pos.m_outer);
|
||||
pos.m_end = m_data.end();
|
||||
pos.m_inner = pos.m_outer == m_data.end() ? nullptr : &pos.m_outer->data.back();
|
||||
pos.m_inner = pos.m_outer == m_data.end() ? nullptr : &pos.m_outer->data.front();
|
||||
verify();
|
||||
return pos;
|
||||
}
|
||||
|
|
|
@ -120,6 +120,17 @@ TEST_CASE("[index_set] add()") {
|
|||
set.add(i);
|
||||
REQUIRE_INDICES(set, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20);
|
||||
}
|
||||
|
||||
SECTION("merges ranges even when they are in different chunks") {
|
||||
realm::IndexSet set2;
|
||||
for (int i = 0; i < 20; ++i) {
|
||||
set.add(i * 2);
|
||||
set2.add(i);
|
||||
set2.add(i * 2);
|
||||
}
|
||||
set.add(set2);
|
||||
REQUIRE(set.count() == 30);
|
||||
}
|
||||
}
|
||||
|
||||
TEST_CASE("[index_set] add_shifted()") {
|
||||
|
|
Loading…
Reference in New Issue