From 2744e0700ca6fe956f569d47010fd4e693fedcfa Mon Sep 17 00:00:00 2001 From: Luke Shumaker Date: Tue, 10 May 2022 04:46:06 -0600 Subject: more --- pkg/binstruct/l2.go | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) (limited to 'pkg/binstruct/l2.go') diff --git a/pkg/binstruct/l2.go b/pkg/binstruct/l2.go index 005d686..32aa313 100644 --- a/pkg/binstruct/l2.go +++ b/pkg/binstruct/l2.go @@ -16,18 +16,20 @@ type structHandler struct { } type structField struct { + typ reflect.Type tag handler name string } func (sh structHandler) Unmarshal(dat []byte) interface{} { - val := reflect.Zero(sh.typ) + val := reflect.New(sh.typ).Elem() for i, field := range sh.fields { if field.skip { continue } - val.Field(i).Set(reflect.ValueOf(field.Unmarshal(dat[field.off:]))) + fieldVal := field.Unmarshal(dat[field.off:]) + val.Field(i).Set(reflect.ValueOf(fieldVal).Convert(field.typ)) } return val.Interface() } @@ -96,6 +98,7 @@ func genStructHandler(structInfo reflect.Type) (handler, error) { curOffset += fieldTag.siz ret.fields = append(ret.fields, structField{ + typ: fieldInfo.Type, tag: fieldTag, handler: fieldHandler, name: fieldInfo.Name, -- cgit v1.2.3-2-g168b