internal/ethapi: better error logic
This commit is contained in:
committed by
Péter Szilágyi
parent
92bee6b037
commit
024e5a74f2
@ -360,15 +360,14 @@ func (b *SimulatedBackend) CallContract(ctx context.Context, call ethereum.CallM
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
// If the result contains a revert reason, unpack and return it.
|
||||
// If the result contains a revert reason, try to unpack and return it.
|
||||
if res.Err != nil && len(res.Revert()) > 0 {
|
||||
reason, err := abi.UnpackRevert(res.Revert())
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
if err == nil {
|
||||
return nil, fmt.Errorf("execution reverted: %v", reason)
|
||||
}
|
||||
return res.Return(), nil
|
||||
}
|
||||
return res.Return(), res.Err
|
||||
}
|
||||
|
||||
// PendingCallContract executes a contract call on the pending state.
|
||||
@ -381,15 +380,14 @@ func (b *SimulatedBackend) PendingCallContract(ctx context.Context, call ethereu
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
// If the result contains a revert reason, unpack and return it.
|
||||
// If the result contains a revert reason, try to unpack and return it.
|
||||
if res.Err != nil && len(res.Revert()) > 0 {
|
||||
reason, err := abi.UnpackRevert(res.Revert())
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
if err == nil {
|
||||
return nil, fmt.Errorf("execution reverted: %v", reason)
|
||||
}
|
||||
return res.Return(), nil
|
||||
}
|
||||
return res.Return(), res.Err
|
||||
}
|
||||
|
||||
// PendingNonceAt implements PendingStateReader.PendingNonceAt, retrieving
|
||||
|
@ -861,15 +861,14 @@ func DoCall(ctx context.Context, b Backend, args CallArgs, blockNrOrHash rpc.Blo
|
||||
if evm.Cancelled() {
|
||||
return nil, fmt.Errorf("execution aborted (timeout = %v)", timeout)
|
||||
}
|
||||
// If the result contains a revert reason, unpack and return it.
|
||||
if result.Err != nil && len(result.Revert()) > 0 {
|
||||
reason, err := abi.UnpackRevert(result.Revert())
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
// If the result contains a revert reason, try to unpack and return it.
|
||||
if res.Err != nil && len(res.Revert()) > 0 {
|
||||
reason, err := abi.UnpackRevert(res.Revert())
|
||||
if err == nil {
|
||||
return nil, fmt.Errorf("execution reverted: %v", reason)
|
||||
}
|
||||
return result, err
|
||||
}
|
||||
return result, res.Err
|
||||
}
|
||||
|
||||
// Call executes the given transaction on the state for the given block number.
|
||||
|
Reference in New Issue
Block a user