CanFail unpack error

This commit is contained in:
ziyeziye 2023-12-11 18:27:30 +08:00
parent fa1d05a4e7
commit c1a22458bf

View file

@ -3,6 +3,7 @@ package multicall
import ( import (
"context" "context"
"fmt" "fmt"
"log"
"time" "time"
"github.com/ethereum/go-ethereum/accounts/abi/bind" "github.com/ethereum/go-ethereum/accounts/abi/bind"
@ -82,7 +83,11 @@ func (caller *Caller) calls(opts *bind.CallOpts, calls ...*Call) ([]*Call, error
for i, result := range results { for i, result := range results {
call := calls[i] // index always matches call := calls[i] // index always matches
call.Failed = !result.Success call.Failed = !result.Success
if err := call.Unpack(result.ReturnData); err != nil && !call.CanFail { if err := call.Unpack(result.ReturnData); err != nil {
if call.CanFail {
log.Println(fmt.Errorf("failed to unpack call outputs at index [%d]: %v", i, err))
continue
}
return calls, fmt.Errorf("failed to unpack call outputs at index [%d]: %v", i, err) return calls, fmt.Errorf("failed to unpack call outputs at index [%d]: %v", i, err)
} }
} }