aboutsummaryrefslogtreecommitdiffstats
path: root/ethchain
diff options
context:
space:
mode:
authorobscuren <geffobscura@gmail.com>2014-05-08 20:20:06 +0800
committerobscuren <geffobscura@gmail.com>2014-05-08 20:20:06 +0800
commit554f4f6f7d8b8bc5332d42631ec9de0d7015eccf (patch)
tree7d68f54fb31700d7ab6b7d41395701f855c4183f /ethchain
parent6c66cb3fa9d73fbb9f570a3f1b7f7dcd24ee2b7f (diff)
downloadgo-tangerine-554f4f6f7d8b8bc5332d42631ec9de0d7015eccf.tar
go-tangerine-554f4f6f7d8b8bc5332d42631ec9de0d7015eccf.tar.gz
go-tangerine-554f4f6f7d8b8bc5332d42631ec9de0d7015eccf.tar.bz2
go-tangerine-554f4f6f7d8b8bc5332d42631ec9de0d7015eccf.tar.lz
go-tangerine-554f4f6f7d8b8bc5332d42631ec9de0d7015eccf.tar.xz
go-tangerine-554f4f6f7d8b8bc5332d42631ec9de0d7015eccf.tar.zst
go-tangerine-554f4f6f7d8b8bc5332d42631ec9de0d7015eccf.zip
Fixed disasamble for all pushes
Diffstat (limited to 'ethchain')
-rw-r--r--ethchain/asm.go7
1 files changed, 4 insertions, 3 deletions
diff --git a/ethchain/asm.go b/ethchain/asm.go
index d46e46af7..492be0999 100644
--- a/ethchain/asm.go
+++ b/ethchain/asm.go
@@ -21,9 +21,10 @@ func Disassemble(script []byte) (asm []string) {
asm = append(asm, fmt.Sprintf("%v", op))
switch op {
- case oPUSH32: // Push PC+1 on to the stack
+ case oPUSH1, oPUSH2, oPUSH3, oPUSH4, oPUSH5, oPUSH6, oPUSH7, oPUSH8, oPUSH9, oPUSH10, oPUSH11, oPUSH12, oPUSH13, oPUSH14, oPUSH15, oPUSH16, oPUSH17, oPUSH18, oPUSH19, oPUSH20, oPUSH21, oPUSH22, oPUSH23, oPUSH24, oPUSH25, oPUSH26, oPUSH27, oPUSH28, oPUSH29, oPUSH30, oPUSH31, oPUSH32:
pc.Add(pc, ethutil.Big1)
- data := script[pc.Int64() : pc.Int64()+32]
+ a := int64(op) - int64(oPUSH1) + 1
+ data := script[pc.Int64() : pc.Int64()+a]
val := ethutil.BigD(data)
var b []byte
@@ -35,7 +36,7 @@ func Disassemble(script []byte) (asm []string) {
asm = append(asm, fmt.Sprintf("0x%x", b))
- pc.Add(pc, big.NewInt(31))
+ pc.Add(pc, big.NewInt(a-1))
}
pc.Add(pc, ethutil.Big1)