From 8e1f9b74fe59f743677ac27598d27b70307820bf Mon Sep 17 00:00:00 2001 From: Erik Grinaker Date: Mon, 9 Mar 2020 19:31:34 +0100 Subject: [PATCH] cleveldb: fix handling of empty keys as iterator endpoints --- CHANGELOG.md | 2 ++ cleveldb_iterator.go | 4 ++-- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 4dae0fbac..d89f6e047 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -16,6 +16,8 @@ - [boltdb] Properly handle blank keys in iterators +- [cleveldb] Fix handling of empty keys as iterator endpoints + - [goleveldb] [\#58](https://github.com/tendermint/tm-db/pull/58) Make `Batch.Close()` actually remove the batch contents ## 0.4.1 diff --git a/cleveldb_iterator.go b/cleveldb_iterator.go index 951fd0407..f0a4f4e37 100644 --- a/cleveldb_iterator.go +++ b/cleveldb_iterator.go @@ -20,7 +20,7 @@ var _ Iterator = (*cLevelDBIterator)(nil) func newCLevelDBIterator(source *levigo.Iterator, start, end []byte, isReverse bool) *cLevelDBIterator { if isReverse { - if end == nil { + if end == nil || len(end) == 0 { source.SeekToLast() } else { source.Seek(end) @@ -34,7 +34,7 @@ func newCLevelDBIterator(source *levigo.Iterator, start, end []byte, isReverse b } } } else { - if start == nil { + if start == nil || len(start) == 0 { source.SeekToFirst() } else { source.Seek(start)