diff options
| author | Andrey Konovalov <andreyknvl@google.com> | 2016-09-21 16:52:55 +0200 |
|---|---|---|
| committer | Andrey Konovalov <andreyknvl@google.com> | 2016-10-04 18:49:57 +0200 |
| commit | c99cbdbe58f7817a2ee6064e72db25fc1d067b41 (patch) | |
| tree | aa1bc1092c27601f9531d87b2b2a25e5d1063d7b /sys/align.go | |
| parent | e73ddfcb3ac418fc690b982f70da15b898096fa5 (diff) | |
Emit BufferBlob for array[int8]
Diffstat (limited to 'sys/align.go')
| -rw-r--r-- | sys/align.go | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/sys/align.go b/sys/align.go index 6e8563da4..055a433f8 100644 --- a/sys/align.go +++ b/sys/align.go @@ -48,14 +48,19 @@ func addAlignment(t *StructType) { off += pad fields = append(fields, makePad(pad)) } - off += f.Size() fields = append(fields, f) if at, ok := f.(ArrayType); ok && (at.Kind == ArrayRandLen || (at.Kind == ArrayRangeLen && at.RangeBegin != at.RangeEnd)) { varLen = true } + if at, ok := f.(BufferType); ok && (at.Kind == BufferBlobRand || (at.Kind == BufferBlobRange && at.RangeBegin != at.RangeEnd)) { + varLen = true + } if varLen && i != len(t.Fields)-1 { panic("embed array in middle of a struct") } + if !varLen { + off += f.Size() + } } if align != 0 && off%align != 0 && !varLen { pad := align - off%align |
