mirror of
https://github.com/golang/go
synced 2024-11-22 00:24:41 -07:00
runtime: return zero value in x, ok = <-c when ok == false
Fixes #401. R=ken2 https://golang.org/cl/180053
This commit is contained in:
parent
c715b58dad
commit
d16bc7a9f2
@ -307,6 +307,7 @@ loop:
|
|||||||
|
|
||||||
if(pres != nil) {
|
if(pres != nil) {
|
||||||
unlock(c);
|
unlock(c);
|
||||||
|
c->elemalg->copy(c->elemsize, ep, nil);
|
||||||
*pres = false;
|
*pres = false;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@ -335,6 +336,7 @@ asynch:
|
|||||||
|
|
||||||
if(pres != nil) {
|
if(pres != nil) {
|
||||||
unlock(c);
|
unlock(c);
|
||||||
|
c->elemalg->copy(c->elemsize, ep, nil);
|
||||||
*pres = false;
|
*pres = false;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
20
test/fixedbugs/bug234.go
Normal file
20
test/fixedbugs/bug234.go
Normal file
@ -0,0 +1,20 @@
|
|||||||
|
// $G $D/$F.go && $L $F.$A && ./$A.out
|
||||||
|
|
||||||
|
// Copyright 2009 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
|
||||||
|
|
||||||
|
func main() {
|
||||||
|
c := make(chan int, 1)
|
||||||
|
c <- 100
|
||||||
|
x, ok := <-c
|
||||||
|
if x != 100 || !ok {
|
||||||
|
panic("x=", x, " ok=", ok, " want 100, true")
|
||||||
|
}
|
||||||
|
x, ok = <-c
|
||||||
|
if x != 0 || ok {
|
||||||
|
panic("x=", x, " ok=", ok, " want 0, false")
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user