From 761c6cae01169ce2f467e7a081b62fcf10ed91d3 Mon Sep 17 00:00:00 2001 From: Thomas Date: Mon, 7 Dec 2020 11:01:20 +0100 Subject: [PATCH] Fix alignment (can only work with next version of rsrc) --- cmd/goversioninfo/main.go | 2 +- icon.go | 17 +++++++++++++++-- 2 files changed, 16 insertions(+), 3 deletions(-) diff --git a/cmd/goversioninfo/main.go b/cmd/goversioninfo/main.go index 3d558ec..882cd07 100644 --- a/cmd/goversioninfo/main.go +++ b/cmd/goversioninfo/main.go @@ -187,7 +187,7 @@ func main() { } } - // Loop through each artchitecture. + // Loop through each architecture. for _, item := range archs { // Create the file using the -o argument. fileout := *flagOut diff --git a/icon.go b/icon.go index 87e27b7..2c65d90 100644 --- a/icon.go +++ b/icon.go @@ -5,6 +5,7 @@ import ( "encoding/binary" "os" + "github.com/akavel/rsrc/binutil" "github.com/akavel/rsrc/coff" "github.com/akavel/rsrc/ico" ) @@ -53,6 +54,10 @@ func (group gRPICONDIR) Size() int64 { return int64(binary.Size(group.ICONDIR) + len(group.Entries)*binary.Size(group.Entries[0])) } +func (group gRPICONDIR) AlignedSize() int64 { + return binutil.Align(group.Size()) +} + type gRPICONDIRENTRY struct { ico.IconDirEntryCommon ID uint16 @@ -93,11 +98,19 @@ func addIcon(coff *coff.Coff, fname string, newID <-chan uint16) error { return nil } -func bufferIcon(f *os.File, offset int64, size int) (*bytes.Reader, error) { +type AlignedReader struct { + *bytes.Reader +} + +func (r AlignedReader) AlignedSize() int64 { + return binutil.Align(r.Size()) +} + +func bufferIcon(f *os.File, offset int64, size int) (coff.Sizer, error) { data := make([]byte, size) _, err := f.ReadAt(data, offset) if err != nil { return nil, err } - return bytes.NewReader(data), nil + return AlignedReader{Reader: bytes.NewReader(data)}, nil }