]> Cypherpunks repositories - gostls13.git/commitdiff
syscall: fix Write(nil) on NaCl
authorRuss Cox <rsc@golang.org>
Tue, 20 May 2014 15:38:34 +0000 (11:38 -0400)
committerRuss Cox <rsc@golang.org>
Tue, 20 May 2014 15:38:34 +0000 (11:38 -0400)
Fixes #7050.

LGTM=crawshaw, r
R=golang-codereviews, crawshaw, r
CC=golang-codereviews
https://golang.org/cl/91590043

src/pkg/syscall/fd_nacl.go
test/fixedbugs/issue7050.go [new file with mode: 0644]

index 19cd98acb13d43586d52321618035ff8b457bb9c..74324142a7ac82378b950d47cf0fb08ba58b0f5e 100644 (file)
@@ -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 (file)
index 0000000..e58b684
--- /dev/null
@@ -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)
+       }
+}