From: Russ Cox Date: Tue, 20 May 2014 15:38:34 +0000 (-0400) Subject: syscall: fix Write(nil) on NaCl X-Git-Tag: go1.3beta2~14 X-Git-Url: http://www.git.cypherpunks.su/?a=commitdiff_plain;h=82854d7b398ff49896c6b10e954891aa36fb1ade;p=gostls13.git syscall: fix Write(nil) on NaCl Fixes #7050. LGTM=crawshaw, r R=golang-codereviews, crawshaw, r CC=golang-codereviews https://golang.org/cl/91590043 --- diff --git a/src/pkg/syscall/fd_nacl.go b/src/pkg/syscall/fd_nacl.go index 19cd98acb1..74324142a7 100644 --- a/src/pkg/syscall/fd_nacl.go +++ b/src/pkg/syscall/fd_nacl.go @@ -162,7 +162,13 @@ func Read(fd int, b []byte) (int, error) { return f.impl.read(b) } +var zerobuf [0]byte + func Write(fd int, b []byte) (int, error) { + if b == nil { + // avoid nil in syscalls; nacl doesn't like that. + b = zerobuf[:] + } f, err := fdToFile(fd) if err != nil { return 0, err diff --git a/test/fixedbugs/issue7050.go b/test/fixedbugs/issue7050.go new file mode 100644 index 0000000000..e58b684049 --- /dev/null +++ b/test/fixedbugs/issue7050.go @@ -0,0 +1,19 @@ +// run + +// Copyright 2014 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package main + +import ( + "fmt" + "os" +) + +func main() { + _, err := os.Stdout.Write(nil) + if err != nil { + fmt.Printf("BUG: os.Stdout.Write(nil) = %v\n", err) + } +}