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;
        }