fix: to care about the case of OpInterfacePtr

fix #359
This commit is contained in:
Nao Yonashiro 2022-04-22 00:35:58 +09:00
parent 171d975753
commit 6db1acfcb6
2 changed files with 14 additions and 1 deletions

View File

@ -3918,3 +3918,16 @@ func TestIssue360(t *testing.T) {
t.Errorf("unexpected result: %v", uints) t.Errorf("unexpected result: %v", uints)
} }
} }
func TestIssue359(t *testing.T) {
var a interface{} = 1
var b interface{} = &a
var c interface{} = &b
v, err := json.Marshal(c)
if err != nil {
t.Errorf("unexpected error: %v", err)
}
if string(v) != "1" {
t.Errorf("unexpected result: %v", string(v))
}
}

View File

@ -363,7 +363,7 @@ func copyOpcode(code *Opcode) *Opcode {
func setTotalLengthToInterfaceOp(code *Opcode) { func setTotalLengthToInterfaceOp(code *Opcode) {
for c := code; !c.IsEnd(); { for c := code; !c.IsEnd(); {
if c.Op == OpInterface { if c.Op == OpInterface || c.Op == OpInterfacePtr {
c.Length = uint32(code.TotalLength()) c.Length = uint32(code.TotalLength())
} }
c = c.IterNext() c = c.IterNext()