From 5cbffd6e6b4430724532beb5bb130ea701cd1a70 Mon Sep 17 00:00:00 2001 From: cinap_lenrek Date: Tue, 8 Nov 2016 21:03:08 +0100 Subject: kernel/qio: maintain Block.next pointer in padblock() --- sys/src/9/port/qio.c | 10 +++------- 1 file changed, 3 insertions(+), 7 deletions(-) (limited to 'sys/src') diff --git a/sys/src/9/port/qio.c b/sys/src/9/port/qio.c index ea2f02dd0..bd026e5a9 100644 --- a/sys/src/9/port/qio.c +++ b/sys/src/9/port/qio.c @@ -78,16 +78,12 @@ padblock(Block *bp, int size) int n; Block *nbp; - if(bp->next != nil) - panic("padblock %#p", getcallerpc(&bp)); - - QDEBUG checkb(bp, "padblock 1"); + QDEBUG checkb(bp, "padblock 0"); if(size >= 0){ if(bp->rp - bp->base >= size){ bp->rp -= size; return bp; } - n = BLEN(bp); nbp = allocb(size+n); nbp->rp += size; @@ -99,12 +95,12 @@ padblock(Block *bp, int size) size = -size; if(bp->lim - bp->wp >= size) return bp; - n = BLEN(bp); - nbp = allocb(size+n); + nbp = allocb(n+size); memmove(nbp->wp, bp->rp, n); nbp->wp += n; } + nbp->next = bp->next; freeb(bp); padblockcnt++; QDEBUG checkb(nbp, "padblock 1"); -- cgit v1.2.3