@@ -89,6 +89,7 @@ func (db *LevelDB) Close() error {
8989// @dev: `LevelDB.prefix + prefix` is used as the prefix for the iteration.
9090func (db * LevelDB ) PrefixedIterate (prefix []byte , cb func (key , value []byte ) (stop bool , err error )) error {
9191 iter := db .db .NewIterator (util .BytesPrefix (db .PrefixedKey (prefix )), nil )
92+ defer iter .Release ()
9293 for iter .Next () {
9394 key := db .UnprefixedKey (iter .Key ())
9495 if stop , err := cb (key , iter .Value ()); err != nil {
@@ -97,12 +98,12 @@ func (db *LevelDB) PrefixedIterate(prefix []byte, cb func(key, value []byte) (st
9798 break
9899 }
99100 }
100- iter .Release ()
101101 return iter .Error ()
102102}
103103
104104func (db * LevelDB ) PrefixedReverseIterate (prefix []byte , cb func (key , value []byte ) (stop bool , err error )) error {
105105 iter := db .db .NewIterator (util .BytesPrefix (db .PrefixedKey (prefix )), nil )
106+ defer iter .Release ()
106107 if iter .Last () {
107108 for {
108109 key := db .UnprefixedKey (iter .Key ())
@@ -117,7 +118,6 @@ func (db *LevelDB) PrefixedReverseIterate(prefix []byte, cb func(key, value []by
117118 }
118119 }
119120 }
120- iter .Release ()
121121 return iter .Error ()
122122}
123123
@@ -126,13 +126,13 @@ func (db *LevelDB) PrefixedReverseIterate(prefix []byte, cb func(key, value []by
126126// @dev: `LevelDB.prefix + prefix` is used as the prefix for the iteration.
127127func (db * LevelDB ) SeekPrevInclusiveKey (prefix []byte , key []byte ) (k []byte , v []byte , err error ) {
128128 iter := db .db .NewIterator (util .BytesPrefix (db .PrefixedKey (prefix )), nil )
129+ defer iter .Release ()
129130 if iter .Seek (db .PrefixedKey (key )) || iter .Valid () && iter .Prev () || iter .Last () && iter .Valid () {
130131 k = db .UnprefixedKey (iter .Key ())
131132 v = iter .Value ()
132133 } else {
133134 err = dbtypes .ErrNotFound
134135 }
135- iter .Release ()
136136 if iter .Error () != nil {
137137 err = iter .Error ()
138138 }
0 commit comments