diff options
author | obscuren <geffobscura@gmail.com> | 2014-07-02 06:06:21 +0800 |
---|---|---|
committer | obscuren <geffobscura@gmail.com> | 2014-07-02 06:06:21 +0800 |
commit | 1954ef47e67762f0308544e3a17976e4c3927e32 (patch) | |
tree | 6c67c4ca85b9b4020a4afe8028f4aa1978ef6c40 /ethchain | |
parent | fd1d0bbde7e76b3376a3a932930bc099f223d8ff (diff) | |
download | dexon-1954ef47e67762f0308544e3a17976e4c3927e32.tar.gz dexon-1954ef47e67762f0308544e3a17976e4c3927e32.tar.zst dexon-1954ef47e67762f0308544e3a17976e4c3927e32.zip |
Suicide is deferred to update
Diffstat (limited to 'ethchain')
-rw-r--r-- | ethchain/vm.go | 16 |
1 files changed, 10 insertions, 6 deletions
diff --git a/ethchain/vm.go b/ethchain/vm.go index c5ccb3420..0b8799a12 100644 --- a/ethchain/vm.go +++ b/ethchain/vm.go @@ -150,7 +150,7 @@ func (vm *Vm) RunClosure(closure *Closure, hook DebugHook) (ret []byte, err erro case SSTORE: var mult *big.Int y, x := stack.Peekn() - val := closure.GetMem(x) + val := closure.GetStorage(x) if val.IsEmpty() && len(y.Bytes()) > 0 { mult = ethutil.Big2 } else if !val.IsEmpty() && len(y.Bytes()) == 0 { @@ -567,7 +567,7 @@ func (vm *Vm) RunClosure(closure *Closure, hook DebugHook) (ret []byte, err erro case SLOAD: require(1) loc := stack.Pop() - val := closure.GetMem(loc) + val := closure.GetStorage(loc) stack.Push(val.BigInt()) @@ -713,10 +713,14 @@ func (vm *Vm) RunClosure(closure *Closure, hook DebugHook) (ret []byte, err erro receiver := vm.state.GetAccount(stack.Pop().Bytes()) receiver.AddAmount(closure.object.Amount) - trie := closure.object.state.trie - trie.NewIterator().Each(func(key string, v *ethutil.Value) { - trie.Delete(key) - }) + closure.object.MarkForDeletion() + + /* + trie := closure.object.state.trie + trie.NewIterator().Each(func(key string, v *ethutil.Value) { + trie.Delete(key) + }) + */ fallthrough case STOP: // Stop the closure |