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
// 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.
}
private:
- DBIter* db_iter_;
+ DBIter* db_iter_ = nullptr;
Arena arena_;
uint64_t sv_number_;
ColumnFamilyData* cfd_ = nullptr;