Always iniitalize ArenaWrappedDBIter::db_iter_ to nullptr (#8889)

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: https://github.com/facebook/rocksdb/pull/8889

Test Plan: Run existing unit tests.

Reviewed By: pdillinger

Differential Revision: D30814756

fbshipit-source-id: 4b1f36896a33dc203d4f1f424ded9554927d61ba
This commit is contained in:
sdong 2021-09-14 14:32:24 -07:00 committed by Facebook GitHub Bot
parent d648cb47b9
commit 12d798ac06

View File

@ -34,7 +34,13 @@ class Version;
// the same as the inner DBIter. // the same as the inner DBIter.
class ArenaWrappedDBIter : public Iterator { class ArenaWrappedDBIter : public Iterator {
public: 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, // Get the arena to be used to allocate memory for DBIter to be wrapped,
// as well as child iterators in it. // as well as child iterators in it.
@ -90,7 +96,7 @@ class ArenaWrappedDBIter : public Iterator {
} }
private: private:
DBIter* db_iter_; DBIter* db_iter_ = nullptr;
Arena arena_; Arena arena_;
uint64_t sv_number_; uint64_t sv_number_;
ColumnFamilyData* cfd_ = nullptr; ColumnFamilyData* cfd_ = nullptr;