tlittle bug fixes - 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 7cb748941ecffdd66630ba463080cf44fcb62161
 (DIR) parent 503f601cb052dc04b9e4e9e91f8e877f00c6b571
 (HTM) Author: rsc <devnull@localhost>
       Date:   Thu, 17 Jun 2004 18:51:50 +0000
       
       little bug fixes
       
       Diffstat:
         M src/libventi/cache.c                |       3 ++-
         M src/libventi/client.c               |       7 +++++++
         M src/libventi/fcall.c                |       2 +-
         M src/libventi/file.c                 |       6 ++++--
       
       4 files changed, 14 insertions(+), 4 deletions(-)
       ---
 (DIR) diff --git a/src/libventi/cache.c b/src/libventi/cache.c
       t@@ -262,7 +262,8 @@ vtcachebumpblock(VtCache *c)
                 */
                if(c->nheap == 0){
                        vtcachedump(c);
       -                sysfatal("vtcachebumpblock: no free blocks in vtCache");
       +                fprint(2, "vtcachebumpblock: no free blocks in vtCache");
       +                abort();
                }
                b = c->heap[0];
                heapdel(b);
 (DIR) diff --git a/src/libventi/client.c b/src/libventi/client.c
       t@@ -64,6 +64,9 @@ vtreadpacket(VtConn *z, uchar score[VtScoreSize], uint type, int n)
        {
                VtFcall tx, rx;
        
       +        if(memcmp(score, vtzeroscore, VtScoreSize) == 0)
       +                return packetalloc();
       +
                memset(&tx, 0, sizeof tx);
                tx.type = VtTread;
                tx.dtype = type;
       t@@ -107,6 +110,10 @@ vtwritepacket(VtConn *z, uchar score[VtScoreSize], uint type, Packet *p)
        {
                VtFcall tx, rx;
        
       +        if(packetsize(p) == 0){
       +                memmove(score, vtzeroscore, VtScoreSize);
       +                return 0;
       +        }
                tx.type = VtTwrite;
                tx.dtype = type;
                tx.data = p;
 (DIR) diff --git a/src/libventi/fcall.c b/src/libventi/fcall.c
       t@@ -226,5 +226,5 @@ vtfcallclear(VtFcall *f)
                vtfree(f->auth);
                f->auth = nil;
                packetfree(f->data);
       -        f->auth = nil;
       +        f->data = nil;
        }
 (DIR) diff --git a/src/libventi/file.c b/src/libventi/file.c
       t@@ -98,6 +98,9 @@ vtfilealloc(VtCache *c, VtBlock *b, VtFile *p, u32int offset, int mode)
                        assert(mode == VtOREAD || p->mode == VtORDWR);
                        p->ref++;
                        qunlock(&p->lk);
       +        }else{
       +                assert(b->addr != NilBlock);
       +                r->local = 1;
                }
                memmove(r->score, b->score, VtScoreSize);
                r->offset = offset;
       t@@ -119,7 +122,6 @@ vtfileroot(VtCache *c, u32int addr, int mode)
                b = vtcachelocal(c, addr, VtDirType);
                if(b == nil)
                        return nil;
       -
                r = vtfilealloc(c, b, nil, 0, mode);
                vtblockput(b);
                return r;
       t@@ -1151,7 +1153,7 @@ vtfileflush(VtFile *f)
        
                ret = flushblock(f->c, nil, e.score, e.psize/VtScoreSize, e.dsize/VtEntrySize,
                        e.type);
       -        if(!ret){
       +        if(ret < 0){
                        vtblockput(b);
                        return -1;
                }