]> Cypherpunks repositories - gostls13.git/commitdiff
debug/pe: remove use of unsafe
authorRuss Cox <rsc@golang.org>
Mon, 20 Oct 2014 15:10:00 +0000 (11:10 -0400)
committerRuss Cox <rsc@golang.org>
Mon, 20 Oct 2014 15:10:00 +0000 (11:10 -0400)
Helps in environments with restricted support for unsafe.

LGTM=bradfitz
R=r, bradfitz
CC=dsymonds, golang-codereviews
https://golang.org/cl/156410044

src/debug/pe/file.go

index ce6f1408fe98f43e1c2afe516482b9c4dc098928..28a4bae1133b6ff790f2ff2a940332096245bf85 100644 (file)
@@ -13,7 +13,6 @@ import (
        "io"
        "os"
        "strconv"
-       "unsafe"
 )
 
 // A File represents an open PE file.
@@ -125,6 +124,11 @@ func (f *File) Close() error {
        return err
 }
 
+var (
+       sizeofOptionalHeader32 = uintptr(binary.Size(OptionalHeader32{}))
+       sizeofOptionalHeader64 = uintptr(binary.Size(OptionalHeader64{}))
+)
+
 // NewFile creates a new File for accessing a PE binary in an underlying reader.
 func NewFile(r io.ReaderAt) (*File, error) {
        f := new(File)
@@ -206,7 +210,7 @@ func NewFile(r io.ReaderAt) (*File, error) {
        var oh32 OptionalHeader32
        var oh64 OptionalHeader64
        switch uintptr(f.FileHeader.SizeOfOptionalHeader) {
-       case unsafe.Sizeof(oh32):
+       case sizeofOptionalHeader32:
                if err := binary.Read(sr, binary.LittleEndian, &oh32); err != nil {
                        return nil, err
                }
@@ -214,7 +218,7 @@ func NewFile(r io.ReaderAt) (*File, error) {
                        return nil, fmt.Errorf("pe32 optional header has unexpected Magic of 0x%x", oh32.Magic)
                }
                f.OptionalHeader = &oh32
-       case unsafe.Sizeof(oh64):
+       case sizeofOptionalHeader64:
                if err := binary.Read(sr, binary.LittleEndian, &oh64); err != nil {
                        return nil, err
                }