mirror of
https://github.com/logos-storage/nim-leveldb.git
synced 2026-01-09 09:03:07 +00:00
feat: dispose iterator when it goes out of scope
This commit is contained in:
parent
f8e61524a9
commit
b9618dc3b4
@ -446,6 +446,10 @@ proc next*(iter: LevelDbQueryIter): (string, string) =
|
||||
proc dispose*(iter: LevelDbQueryIter) =
|
||||
iter.dispose(iter[])
|
||||
|
||||
proc `=destroy`(iter: var LevelDbQueryIterObj) =
|
||||
if iter.dispose != nil:
|
||||
iter.dispose(iter)
|
||||
|
||||
proc closeIter(iter: var LevelDbQueryIterObj, iterPtr: ptr leveldb_iterator_t) =
|
||||
iter.finished = true
|
||||
leveldb_iter_destroy(iterPtr)
|
||||
|
||||
@ -255,6 +255,15 @@ suite "leveldb queryIter":
|
||||
iter.next() == empty
|
||||
iter.finished
|
||||
|
||||
test "iterator is disposed when it goes out of scope":
|
||||
when defined(gcOrc) or defined(gcArc):
|
||||
block:
|
||||
let iter = db.queryIter()
|
||||
discard iter.next()
|
||||
db.close() # crashes if iterator not disposed
|
||||
else:
|
||||
skip()
|
||||
|
||||
test "skip":
|
||||
let iter = db.queryIter(skip = 1)
|
||||
check:
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user