Fixed state reset case

This commit is contained in:
obscuren
2014-07-07 13:59:09 +02:00
parent 42bb3d8aae
commit b01cb2406f
3 changed files with 29 additions and 4 deletions

View File

@ -67,11 +67,19 @@ func (self *State) Empty() {
func (self *State) Update() {
for _, stateObject := range self.stateObjects {
if stateObject.remove {
self.trie.Delete(string(stateObject.Address()))
self.DeleteStateObject(stateObject)
} else {
println(ethutil.Bytes2Hex(stateObject.Address()))
self.UpdateStateObject(stateObject)
}
}
// FIXME trie delete is broken
valid, t2 := ethtrie.ParanoiaCheck(self.trie)
if !valid {
self.trie = t2
}
}
// Purges the current trie.
@ -100,6 +108,12 @@ func (self *State) UpdateStateObject(stateObject *StateObject) {
self.manifest.AddObjectChange(stateObject)
}
func (self *State) DeleteStateObject(stateObject *StateObject) {
self.trie.Delete(string(stateObject.Address()))
delete(self.stateObjects, string(stateObject.Address()))
}
func (self *State) GetStateObject(addr []byte) *StateObject {
stateObject := self.stateObjects[string(addr)]
if stateObject != nil {