Skip to content

Commit

Permalink
Use proper sizes when casting to Go slice
Browse files Browse the repository at this point in the history
Addresses most of the issues in #101.

The following commands now succeed:
    GOARCH=mips go build github.com/google/fscrypt/util
    GOARCH=mipsle go build github.com/google/fscrypt/util
  • Loading branch information
josephlr committed Aug 22, 2018
1 parent 3e32282 commit 04bf9cd
Showing 1 changed file with 4 additions and 5 deletions.
9 changes: 4 additions & 5 deletions util/util.go
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,6 @@ package util

import (
"bufio"
"math"
"os"
"os/user"
"strconv"
Expand All @@ -43,15 +42,15 @@ func Ptr(slice []byte) unsafe.Pointer {
// ByteSlice takes a pointer to some data and views it as a slice of bytes.
// Note, indexing into this slice is unsafe.
func ByteSlice(ptr unsafe.Pointer) []byte {
// Silce must fix in 32-bit address space to build on 32-bit platforms.
return (*[math.MaxInt32]byte)(ptr)[:]
// Silce must fit in the smallest address space go suppports.
return (*[1 << 30]byte)(ptr)[:]
}

// PointerSlice takes a pointer to an array of pointers and views it as a slice
// of pointers. Note, indexing into this slice is unsafe.
func PointerSlice(ptr unsafe.Pointer) []unsafe.Pointer {
// Silce must fix in 32-bit address space to build on 32-bit platforms.
return (*[math.MaxInt32 / 4]unsafe.Pointer)(ptr)[:]
// Silce must fit in the smallest address space go suppports.
return (*[1 << 28]unsafe.Pointer)(ptr)[:]
}

// Index returns the first index i such that inVal == inArray[i].
Expand Down

0 comments on commit 04bf9cd

Please sign in to comment.