leveldb: fix DB.getMems() panic when db is closed
diff --git a/leveldb/db_state.go b/leveldb/db_state.go
index 590b24f..b7de09e 100644
--- a/leveldb/db_state.go
+++ b/leveldb/db_state.go
@@ -153,10 +153,11 @@
func (db *DB) getMems() (e, f *memDB) {
db.memMu.RLock()
defer db.memMu.RUnlock()
- if db.mem == nil && !db.isClosed() {
+ if db.mem != nil {
+ db.mem.incref()
+ } else if !db.isClosed() {
panic("nil effective mem")
}
- db.mem.incref()
if db.frozenMem != nil {
db.frozenMem.incref()
}
@@ -167,10 +168,11 @@
func (db *DB) getEffectiveMem() *memDB {
db.memMu.RLock()
defer db.memMu.RUnlock()
- if db.mem == nil && !db.isClosed() {
+ if db.mem != nil {
+ db.mem.incref()
+ } else if !db.isClosed() {
panic("nil effective mem")
}
- db.mem.incref()
return db.mem
}