aboutsummaryrefslogtreecommitdiffstats
path: root/vendor/github.com/lunixbochs/struc/fields.go
diff options
context:
space:
mode:
Diffstat (limited to 'vendor/github.com/lunixbochs/struc/fields.go')
-rw-r--r--vendor/github.com/lunixbochs/struc/fields.go17
1 files changed, 10 insertions, 7 deletions
diff --git a/vendor/github.com/lunixbochs/struc/fields.go b/vendor/github.com/lunixbochs/struc/fields.go
index 80e2045..5d591bf 100644
--- a/vendor/github.com/lunixbochs/struc/fields.go
+++ b/vendor/github.com/lunixbochs/struc/fields.go
@@ -12,14 +12,18 @@ type Fields []*Field
func (f Fields) SetByteOrder(order binary.ByteOrder) {
for _, field := range f {
- field.Order = order
+ if field != nil {
+ field.Order = order
+ }
}
}
func (f Fields) String() string {
fields := make([]string, len(f))
for i, field := range f {
- fields[i] = field.String()
+ if field != nil {
+ fields[i] = field.String()
+ }
}
return "{" + strings.Join(fields, ", ") + "}"
}
@@ -30,9 +34,8 @@ func (f Fields) Sizeof(val reflect.Value, options *Options) int {
}
size := 0
for i, field := range f {
- v := val.Field(i)
- if v.CanSet() {
- size += field.Size(v, options)
+ if field != nil {
+ size += field.Size(val.Field(i), options)
}
}
return size
@@ -63,7 +66,7 @@ func (f Fields) Pack(buf []byte, val reflect.Value, options *Options) (int, erro
}
pos := 0
for i, field := range f {
- if !field.CanSet {
+ if field == nil {
continue
}
v := val.Field(i)
@@ -106,7 +109,7 @@ func (f Fields) Unpack(r io.Reader, val reflect.Value, options *Options) error {
var tmp [8]byte
var buf []byte
for i, field := range f {
- if !field.CanSet {
+ if field == nil {
continue
}
v := val.Field(i)