1
0
mirror of https://github.com/golang/go synced 2024-11-21 23:34:42 -07:00

runtime: fix panic for make(chan [0]byte).

I suspect that this was introduced by
http://code.google.com/p/go/source/detail?r=6e4ee32fffd1

R=r
CC=golang-dev
https://golang.org/cl/4764045
This commit is contained in:
Nigel Tao 2011-07-18 15:54:11 +10:00
parent a8e0035bd3
commit 95323c59ea
2 changed files with 17 additions and 1 deletions

View File

@ -97,7 +97,7 @@ runtime·makechan_c(Type *elem, int64 hint)
int32 n;
byte *by;
if(hint < 0 || (int32)hint != hint || hint > ((uintptr)-1) / elem->size)
if(hint < 0 || (int32)hint != hint || (elem->size > 0 && hint > ((uintptr)-1) / elem->size))
runtime·panicstring("makechan: size out of range");
if(elem->alg >= nelem(runtime·algarray)) {

16
test/chan/zerosize.go Normal file
View File

@ -0,0 +1,16 @@
// $G $D/$F.go && $L $F.$A && ./$A.out
// Copyright 2011 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.
// Making channels of a zero-sized type should not panic.
package main
func main() {
_ = make(chan [0]byte)
_ = make(chan [0]byte, 1)
_ = make(chan struct{})
_ = make(chan struct{}, 1)
}