diff --git a/manager/eris-mint/evm/vm.go b/manager/eris-mint/evm/vm.go index e113513aa0585225b0147573e919151ccacd0245..b44bddfeceae9b6849f51926963abf565c8599ce 100644 --- a/manager/eris-mint/evm/vm.go +++ b/manager/eris-mint/evm/vm.go @@ -27,7 +27,7 @@ var ( ErrDataStackOverflow = errors.New("Data stack overflow") ErrDataStackUnderflow = errors.New("Data stack underflow") ErrInvalidContract = errors.New("Invalid contract") - ErrNativeContractCodeCopy = errors.New("Tried to copy native contract code, but this is not supported") + ErrNativeContractCodeCopy = errors.New("Tried to copy native contract code") ) type ErrPermission struct { @@ -571,8 +571,8 @@ func (vm *VM) call(caller, callee *Account, code, input []byte, value int64, gas if _, ok := registeredNativeContracts[addr]; !ok { return nil, firstErr(err, ErrUnknownAddress) } - stack.Push64(int64(One256)) - dbg.Printf(" => Hit native contract\n\n") + dbg.Printf(" => returning code size of 1 to indicated existence of native contract at %X\n", addr) + stack.Push(One256) } else { code := acc.Code l := int64(len(code)) @@ -586,10 +586,11 @@ func (vm *VM) call(caller, callee *Account, code, input []byte, value int64, gas } acc := vm.appState.GetAccount(addr) if acc == nil { - if _, ok := registeredNativeContracts[addr]; !ok { - return nil, firstErr(err, ErrUnknownAddress) + if _, ok := registeredNativeContracts[addr]; ok { + dbg.Printf(" => attempted to copy native contract at %X but this is not supported\n", addr) + return nil, firstErr(err, ErrNativeContractCodeCopy) } - return nil, firstErr(err, ErrNativeContractCodeCopy) + return nil, firstErr(err, ErrUnknownAddress) } code := acc.Code memOff := stack.Pop64()