Closed
Description
The following program:
package main
import (
"encoding/asn1"
"fmt"
"reflect"
)
func main() {
data := []byte("\x06\x010")
var v interface{}
_, err := asn1.Unmarshal(data, &v)
if err != nil {
return
}
data1, err := asn1.Marshal(v)
if err != nil {
panic(err)
}
var v1 interface{}
_, err = asn1.Unmarshal(data1, &v1)
if err != nil {
panic(err)
}
if !reflect.DeepEqual(v, v1) {
fmt.Printf("v0: %#v data=%q\n", v, data)
fmt.Printf("v1: %#v data=%q\n", v1, data1)
panic("not equal")
}
}
prints:
v0: []int{1, 8} data="\x06\x010"
v1: <nil> data="0\x06\x02\x01\x01\x02\x01\b"
panic: not equal
The slice should not get lost during marshal/unmarshal.
on commit b0532a9