From 66f2cbb91fd12efaa50c5e7f2db43f1dc5b63cf5 Mon Sep 17 00:00:00 2001 From: xushiwei Date: Sun, 7 Jul 2024 17:23:21 +0800 Subject: [PATCH] runtime chan fix: ChanTryRecv --- internal/runtime/z_chan.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/internal/runtime/z_chan.go b/internal/runtime/z_chan.go index 9bf5fefa1..950c60968 100644 --- a/internal/runtime/z_chan.go +++ b/internal/runtime/z_chan.go @@ -167,10 +167,10 @@ func ChanTryRecv(p *Chan, v unsafe.Pointer, eltSize int) (recvOK bool, tryOK boo p.cond.Broadcast() if n == 0 { p.mutex.Lock() - if p.getp == chanHasRecv { + for p.getp == chanHasRecv && !p.close { p.cond.Wait(&p.mutex) } - recvOK = (p.getp != chanHasRecv) + recvOK = !p.close tryOK = recvOK p.mutex.Unlock() } else {