debug/pe: remove use of unsafe

Helps in environments with restricted support for unsafe.

LGTM=bradfitz
R=r, bradfitz
CC=dsymonds, golang-codereviews
https://golang.org/cl/156410044
This commit is contained in:
Russ Cox
2014-10-20 11:10:00 -04:00
parent a4a249a6e9
commit 19db5eaaa9
+7 -3
View 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
}