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:
parent
d648cb47b9
commit
12d798ac06
@ -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;
|
||||||
|
Loading…
Reference in New Issue
Block a user