@@ -524,7 +524,10 @@ func (k Keeper) removeFromContractCodeSecondaryIndex(ctx sdk.Context, contractAd
524
524
// IterateContractsByCode iterates over all contracts with given codeID ASC on code update time.
525
525
func (k Keeper ) IterateContractsByCode (ctx sdk.Context , codeID uint64 , cb func (address sdk.AccAddress ) bool ) {
526
526
prefixStore := prefix .NewStore (ctx .KVStore (k .storeKey ), types .GetContractByCodeIDSecondaryIndexPrefix (codeID ))
527
- for iter := prefixStore .Iterator (nil , nil ); iter .Valid (); iter .Next () {
527
+ iter := prefixStore .Iterator (nil , nil )
528
+ defer iter .Close ()
529
+
530
+ for ; iter .Valid (); iter .Next () {
528
531
key := iter .Key ()
529
532
if cb (key [types .AbsoluteTxPositionLen :]) {
530
533
return
@@ -550,7 +553,10 @@ func (k Keeper) appendToContractHistory(ctx sdk.Context, contractAddr sdk.AccAdd
550
553
// find last element position
551
554
var pos uint64
552
555
prefixStore := prefix .NewStore (store , types .GetContractCodeHistoryElementPrefix (contractAddr ))
553
- if iter := prefixStore .ReverseIterator (nil , nil ); iter .Valid () {
556
+ iter := prefixStore .ReverseIterator (nil , nil )
557
+ defer iter .Close ()
558
+
559
+ if iter .Valid () {
554
560
pos = sdk .BigEndianToUint64 (iter .Value ())
555
561
}
556
562
// then store with incrementing position
@@ -565,6 +571,8 @@ func (k Keeper) GetContractHistory(ctx sdk.Context, contractAddr sdk.AccAddress)
565
571
prefixStore := prefix .NewStore (ctx .KVStore (k .storeKey ), types .GetContractCodeHistoryElementPrefix (contractAddr ))
566
572
r := make ([]types.ContractCodeHistoryEntry , 0 )
567
573
iter := prefixStore .Iterator (nil , nil )
574
+ defer iter .Close ()
575
+
568
576
for ; iter .Valid (); iter .Next () {
569
577
var e types.ContractCodeHistoryEntry
570
578
k .cdc .MustUnmarshal (iter .Value (), & e )
@@ -577,6 +585,8 @@ func (k Keeper) GetContractHistory(ctx sdk.Context, contractAddr sdk.AccAddress)
577
585
func (k Keeper ) getLastContractHistoryEntry (ctx sdk.Context , contractAddr sdk.AccAddress ) types.ContractCodeHistoryEntry {
578
586
prefixStore := prefix .NewStore (ctx .KVStore (k .storeKey ), types .GetContractCodeHistoryElementPrefix (contractAddr ))
579
587
iter := prefixStore .ReverseIterator (nil , nil )
588
+ defer iter .Close ()
589
+
580
590
var r types.ContractCodeHistoryEntry
581
591
if ! iter .Valid () {
582
592
// all contracts have a history
@@ -666,6 +676,8 @@ func (k Keeper) storeContractInfo(ctx sdk.Context, contractAddress sdk.AccAddres
666
676
func (k Keeper ) IterateContractInfo (ctx sdk.Context , cb func (sdk.AccAddress , types.ContractInfo ) bool ) {
667
677
prefixStore := prefix .NewStore (ctx .KVStore (k .storeKey ), types .ContractKeyPrefix )
668
678
iter := prefixStore .Iterator (nil , nil )
679
+ defer iter .Close ()
680
+
669
681
for ; iter .Valid (); iter .Next () {
670
682
var contract types.ContractInfo
671
683
k .cdc .MustUnmarshal (iter .Value (), & contract )
@@ -716,6 +728,8 @@ func (k Keeper) containsCodeInfo(ctx sdk.Context, codeID uint64) bool {
716
728
func (k Keeper ) IterateCodeInfos (ctx sdk.Context , cb func (uint64 , types.CodeInfo ) bool ) {
717
729
prefixStore := prefix .NewStore (ctx .KVStore (k .storeKey ), types .CodeKeyPrefix )
718
730
iter := prefixStore .Iterator (nil , nil )
731
+ defer iter .Close ()
732
+
719
733
for ; iter .Valid (); iter .Next () {
720
734
var c types.CodeInfo
721
735
k .cdc .MustUnmarshal (iter .Value (), & c )
@@ -788,6 +802,8 @@ func (k Keeper) IsPinnedCode(ctx sdk.Context, codeID uint64) bool {
788
802
func (k Keeper ) InitializePinnedCodes (ctx sdk.Context ) error {
789
803
store := prefix .NewStore (ctx .KVStore (k .storeKey ), types .PinnedCodeIndexPrefix )
790
804
iter := store .Iterator (nil , nil )
805
+ defer iter .Close ()
806
+
791
807
for ; iter .Valid (); iter .Next () {
792
808
codeInfo := k .GetCodeInfo (ctx , types .ParsePinnedCodeIndex (iter .Key ()))
793
809
if codeInfo == nil {
0 commit comments