@@ -21,7 +21,7 @@ import (
2121 "encoding/binary"
2222 "errors"
2323 "math/big"
24- "sort "
24+ "slices "
2525
2626 "github.com/XinFinOrg/XDPoSChain/common"
2727 "github.com/XinFinOrg/XDPoSChain/core/types"
@@ -608,23 +608,13 @@ type badBlock struct {
608608 Body * types.Body
609609}
610610
611- // badBlockList implements the sort interface to allow sorting a list of
612- // bad blocks by their number in the reverse order.
613- type badBlockList []* badBlock
614-
615- func (s badBlockList ) Len () int { return len (s ) }
616- func (s badBlockList ) Less (i , j int ) bool {
617- return s [i ].Header .Number .Uint64 () < s [j ].Header .Number .Uint64 ()
618- }
619- func (s badBlockList ) Swap (i , j int ) { s [i ], s [j ] = s [j ], s [i ] }
620-
621611// ReadBadBlock retrieves the bad block with the corresponding block hash.
622612func ReadBadBlock (db ethdb.Reader , hash common.Hash ) * types.Block {
623613 blob , err := db .Get (badBlockKey )
624614 if err != nil {
625615 return nil
626616 }
627- var badBlocks badBlockList
617+ var badBlocks [] * badBlock
628618 if err := rlp .DecodeBytes (blob , & badBlocks ); err != nil {
629619 return nil
630620 }
@@ -647,7 +637,7 @@ func ReadAllBadBlocks(db ethdb.Reader) []*types.Block {
647637 if err != nil {
648638 return nil
649639 }
650- var badBlocks badBlockList
640+ var badBlocks [] * badBlock
651641 if err := rlp .DecodeBytes (blob , & badBlocks ); err != nil {
652642 return nil
653643 }
@@ -669,7 +659,7 @@ func WriteBadBlock(db ethdb.KeyValueStore, block *types.Block) {
669659 if err != nil {
670660 log .Warn ("Failed to load old bad blocks" , "error" , err )
671661 }
672- var badBlocks badBlockList
662+ var badBlocks [] * badBlock
673663 if len (blob ) > 0 {
674664 if err := rlp .DecodeBytes (blob , & badBlocks ); err != nil {
675665 log .Crit ("Failed to decode old bad blocks" , "error" , err )
@@ -685,7 +675,10 @@ func WriteBadBlock(db ethdb.KeyValueStore, block *types.Block) {
685675 Header : block .Header (),
686676 Body : block .Body (),
687677 })
688- sort .Sort (sort .Reverse (badBlocks ))
678+ slices .SortFunc (badBlocks , func (a , b * badBlock ) int {
679+ // Note: sorting in descending number order.
680+ return b .Header .Number .Cmp (a .Header .Number )
681+ })
689682 if len (badBlocks ) > badBlockToKeep {
690683 badBlocks = badBlocks [:badBlockToKeep ]
691684 }
0 commit comments