Skip to content

Commit

Permalink
Always iniitalize ArenaWrappedDBIter::db_iter_ to nullptr (#8889)
Browse files Browse the repository at this point in the history
Summary:
ArenaWrappedDBIter::db_iter_ should never be nullptr. However, when debugging a segfault, it's hard to distinguish it is not initialized (not possible) and other corruption. Add this nullptr to help distinguish the case.

Pull Request resolved: #8889

Test Plan: Run existing unit tests.

Reviewed By: pdillinger

Differential Revision: D30814756

fbshipit-source-id: 4b1f36896a33dc203d4f1f424ded9554927d61ba
  • Loading branch information
siying authored and facebook-github-bot committed Sep 14, 2021
1 parent d648cb4 commit 12d798a
Showing 1 changed file with 8 additions and 2 deletions.
10 changes: 8 additions & 2 deletions db/arena_wrapped_db_iter.h
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,13 @@ class Version;
// the same as the inner DBIter.
class ArenaWrappedDBIter : public Iterator {
public:
virtual ~ArenaWrappedDBIter() { db_iter_->~DBIter(); }
virtual ~ArenaWrappedDBIter() {
if (db_iter_ != nullptr) {
db_iter_->~DBIter();
} else {
assert(false);
}
}

// Get the arena to be used to allocate memory for DBIter to be wrapped,
// as well as child iterators in it.
Expand Down Expand Up @@ -90,7 +96,7 @@ class ArenaWrappedDBIter : public Iterator {
}

private:
DBIter* db_iter_;
DBIter* db_iter_ = nullptr;
Arena arena_;
uint64_t sv_number_;
ColumnFamilyData* cfd_ = nullptr;
Expand Down

0 comments on commit 12d798a

Please sign in to comment.