1// run 2 3//go:build amd64p32 4 5// Copyright 2018 The Go Authors. All rights reserved. 6// Use of this source code is governed by a BSD-style 7// license that can be found in the LICENSE file. 8 9package main 10 11import ( 12 "bytes" 13 "fmt" 14 "unsafe" 15) 16 17func main() { 18 b := make([]byte, 128) 19 for i := range b { 20 b[i] = 1 21 } 22 if bytes.IndexByte(b, 0) != -1 { 23 panic("found 0") 24 } 25 for i := range b { 26 b[i] = 0 27 c := b 28 *(*int)(unsafe.Pointer(uintptr(unsafe.Pointer(&c)) + unsafe.Sizeof(uintptr(0)))) = 1<<31 - 1 29 if bytes.IndexByte(c, 0) != i { 30 panic(fmt.Sprintf("missing 0 at %d\n", i)) 31 } 32 b[i] = 1 33 } 34} 35