From: Ilya Tocar Date: Tue, 21 Feb 2017 22:57:37 +0000 (-0600) Subject: test/fixedbugs: add a test for 19201 X-Git-Tag: go1.9beta1~948 X-Git-Url: http://www.git.cypherpunks.su/?a=commitdiff_plain;h=4b50c81356b7e36ae1de1651eb3f5fb9df3211dd;p=gostls13.git test/fixedbugs: add a test for 19201 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 TryBot-Result: Gobot Gobot Reviewed-by: Austin Clements Reviewed-by: Keith Randall --- diff --git a/test/fixedbugs/issue19201.go b/test/fixedbugs/issue19201.go new file mode 100644 index 0000000000..e370d55df1 --- /dev/null +++ b/test/fixedbugs/issue19201.go @@ -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: + } +}