Skip to content

Commit

Permalink
Merge pull request #102 from google/mips
Browse files Browse the repository at this point in the history
Use proper sizes when casting to Go slice
  • Loading branch information
josephlr authored Aug 22, 2018
2 parents 3e32282 + 04bf9cd commit 75a59da
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 75a59da

Please sign in to comment.