avoid infinite recursion by proxying to iterator

```
WARNING: staticcheck, gosimple and unused are all set, using megacheck instead
db/go_level_db.go:126:15⚠️ infinite recursive call (SA5007) (megacheck)
db/go_level_db.go:135:17⚠️ infinite recursive call (SA5007) (megacheck)
db/mem_db.go:106:2⚠️ redundant return statement (S1023) (megacheck)
```

https://circleci.com/gh/tendermint/tmlibs/220

Also remove unnecessary return statement
This commit is contained in:
Anton Kaliaev 2017-10-16 22:38:37 +04:00
parent cd2ad19db4
commit 0b22b27bbb
No known key found for this signature in database
GPG Key ID: 7B6881D965918214
2 changed files with 15 additions and 4 deletions

View File

@ -118,12 +118,12 @@ func (db *GoLevelDB) Stats() map[string]string {
} }
type goLevelDBIterator struct { type goLevelDBIterator struct {
iterator.Iterator source iterator.Iterator
} }
// Key returns a copy of the current key. // Key returns a copy of the current key.
func (it *goLevelDBIterator) Key() []byte { func (it *goLevelDBIterator) Key() []byte {
key := it.Key() key := it.source.Key()
k := make([]byte, len(key)) k := make([]byte, len(key))
copy(k, key) copy(k, key)
@ -132,13 +132,25 @@ func (it *goLevelDBIterator) Key() []byte {
// Value returns a copy of the current value. // Value returns a copy of the current value.
func (it *goLevelDBIterator) Value() []byte { func (it *goLevelDBIterator) Value() []byte {
val := it.Value() val := it.source.Value()
v := make([]byte, len(val)) v := make([]byte, len(val))
copy(v, val) copy(v, val)
return v return v
} }
func (it *goLevelDBIterator) Error() error {
return it.source.Error()
}
func (it *goLevelDBIterator) Next() bool {
return it.source.Next()
}
func (it *goLevelDBIterator) Release() {
it.source.Release()
}
func (db *GoLevelDB) Iterator() Iterator { func (db *GoLevelDB) Iterator() Iterator {
return &goLevelDBIterator{db.db.NewIterator(nil, nil)} return &goLevelDBIterator{db.db.NewIterator(nil, nil)}
} }

View File

@ -103,7 +103,6 @@ func (it *memDBIterator) Value() []byte {
func (it *memDBIterator) Release() { func (it *memDBIterator) Release() {
it.db = nil it.db = nil
it.keys = nil it.keys = nil
return
} }
func (it *memDBIterator) Error() error { func (it *memDBIterator) Error() error {