]> Cypherpunks repositories - gostls13.git/commitdiff
test/fixedbugs: add a test for 19201
authorIlya Tocar <ilya.tocar@intel.com>
Tue, 21 Feb 2017 22:57:37 +0000 (16:57 -0600)
committerIlya Tocar <ilya.tocar@intel.com>
Tue, 28 Mar 2017 19:07:23 +0000 (19:07 +0000)
This was cherry-picked to 1.8 as CL 38587, but on master issue was fixed
by CL 37661. Add still relevant part (test) and close issue, since test passes.

Fixes #19201

Change-Id: I6415792e2c465dc6d9bd6583ba1e54b107bcf5cc
Reviewed-on: https://go-review.googlesource.com/37376
Run-TryBot: Ilya Tocar <ilya.tocar@intel.com>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Austin Clements <austin@google.com>
Reviewed-by: Keith Randall <khr@golang.org>
test/fixedbugs/issue19201.go [new file with mode: 0644]

diff --git a/test/fixedbugs/issue19201.go b/test/fixedbugs/issue19201.go
new file mode 100644 (file)
index 0000000..e370d55
--- /dev/null
@@ -0,0 +1,52 @@
+// run
+
+// Copyright 2017 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 (
+       "encoding/binary"
+)
+
+var (
+       ch1 = make(chan int)
+       ch2 = make(chan int)
+
+       bin  = []byte("a\000\000\001")
+       want = binary.BigEndian.Uint32(bin)
+
+       c consumer = noopConsumer{}
+)
+
+type msg struct {
+       code uint32
+}
+
+type consumer interface {
+       consume(msg)
+}
+
+type noopConsumer struct{}
+
+func (noopConsumer) consume(msg) {}
+
+func init() {
+       close(ch1)
+}
+
+func main() {
+       var m msg
+       m.code = binary.BigEndian.Uint32(bin)
+
+       select {
+       case <-ch1:
+               c.consume(m)
+               if m.code != want {
+                       // can not use m.code here, or it will work
+                       panic("BigEndian read failed")
+               }
+       case <-ch2:
+       }
+}