tlibthread: fix no-receive nbrecv etc. bug (David Jeannot) - plan9port - [fork] Plan 9 from user space
(HTM) git clone git://src.adamsgaard.dk/plan9port
(DIR) Log
(DIR) Files
(DIR) Refs
(DIR) README
(DIR) LICENSE
---
(DIR) commit 0215811dc2517e7213a3cd7423f94710b20b57d1
(DIR) parent 454ae2ad280b9f41641ad2431604a04128d4db84
(HTM) Author: Russ Cox <rsc@swtch.com>
Date: Tue, 6 May 2008 12:51:19 -0400
libthread: fix no-receive nbrecv etc. bug (David Jeannot)
Diffstat:
M src/libthread/channel.c | 20 ++++++++++++--------
1 file changed, 12 insertions(+), 8 deletions(-)
---
(DIR) diff --git a/src/libthread/channel.c b/src/libthread/channel.c
t@@ -363,8 +363,9 @@ chanrecvp(Channel *c)
{
void *v;
- _chanop(c, CHANRCV, (void*)&v, 1);
- return v;
+ if(_chanop(c, CHANRCV, (void*)&v, 1) > 0)
+ return v;
+ return nil;
}
int
t@@ -378,8 +379,9 @@ channbrecvp(Channel *c)
{
void *v;
- _chanop(c, CHANRCV, (void*)&v, 0);
- return v;
+ if(_chanop(c, CHANRCV, (void*)&v, 0) > 0)
+ return v;
+ return nil;
}
int
t@@ -393,8 +395,9 @@ chanrecvul(Channel *c)
{
ulong val;
- _chanop(c, CHANRCV, &val, 1);
- return val;
+ if(_chanop(c, CHANRCV, &val, 1) > 0)
+ return val;
+ return -1;
}
int
t@@ -408,7 +411,8 @@ channbrecvul(Channel *c)
{
ulong val;
- _chanop(c, CHANRCV, &val, 0);
- return val;
+ if(_chanop(c, CHANRCV, &val, 0) > 0)
+ return val;
+ return -1;
}