Skip to content

Commit c2b9541

Browse files
kostasrimromange
authored andcommitted
fix: ExtentTree use of invalidated iterator (#4416)
Fixes accessing and invalidated iterator within ExtendTree
1 parent 0b7c637 commit c2b9541

File tree

1 file changed

+5
-4
lines changed

1 file changed

+5
-4
lines changed

src/core/extent_tree.cc

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ void ExtentTree::Add(size_t start, size_t len) {
1616
DCHECK_EQ(len_extents_.size(), extents_.size());
1717

1818
auto it = extents_.lower_bound(start);
19-
optional<absl::btree_map<size_t, size_t>::iterator> prev_extent;
19+
optional<size_t> prev_extent_key;
2020

2121
if (it != extents_.begin()) {
2222
auto prev = it;
@@ -29,7 +29,7 @@ void ExtentTree::Add(size_t start, size_t len) {
2929
prev->second += len;
3030
start = prev->first;
3131
len += prev_len;
32-
prev_extent = prev;
32+
prev_extent_key = prev->first;
3333
}
3434
}
3535

@@ -44,8 +44,9 @@ void ExtentTree::Add(size_t start, size_t len) {
4444
}
4545

4646
len_extents_.emplace(len, start);
47-
if (prev_extent) {
48-
(*prev_extent)->second = start + len;
47+
if (prev_extent_key) {
48+
DCHECK(extents_.find(*prev_extent_key) != extents_.end());
49+
extents_[*prev_extent_key] = start + len;
4950
} else {
5051
extents_.emplace(start, start + len);
5152
}

0 commit comments

Comments
 (0)