diff options
author | peter <peter@FreeBSD.org> | 1995-11-02 08:37:22 +0000 |
---|---|---|
committer | peter <peter@FreeBSD.org> | 1995-11-02 08:37:22 +0000 |
commit | 3d387b17dbfda691aa60584d85776a2783adbe77 (patch) | |
tree | 326053e1ee22df16c102d48780f17e17addc3b04 /sys/kern/tty_subr.c | |
parent | c85bf90168e3d2e61908e54987b6493f20b4e818 (diff) | |
download | FreeBSD-src-3d387b17dbfda691aa60584d85776a2783adbe77.zip FreeBSD-src-3d387b17dbfda691aa60584d85776a2783adbe77.tar.gz |
Make putc and b_to_q deal with clists with no reserved blocks in a more
civilised manner than panicing. This only happens as a result of another
state botch somewhere else, eg: from a tty driver calling putc or b_to_q
on a closed device. Apparently, it's also been implicated in a panic
with a status (^T) event on ptys.
This change should pretty well be in it's final form now.
Diffstat (limited to 'sys/kern/tty_subr.c')
-rw-r--r-- | sys/kern/tty_subr.c | 18 |
1 files changed, 5 insertions, 13 deletions
diff --git a/sys/kern/tty_subr.c b/sys/kern/tty_subr.c index 1855e17..133ced4 100644 --- a/sys/kern/tty_subr.c +++ b/sys/kern/tty_subr.c @@ -6,7 +6,7 @@ * of this software, nor does the author assume any responsibility * for damages incurred with its use. * - * $Id: tty_subr.c,v 1.15 1995/10/31 19:00:00 peter Exp $ + * $Id: tty_subr.c,v 1.16 1995/11/01 15:59:55 peter Exp $ */ /* @@ -351,12 +351,8 @@ putc(chr, clistp) if (clistp->c_cl == NULL) { if (clistp->c_cbreserved < 1) { splx(s); - printf("putc to a clist with no reserved cblocks: data discarded.\n"); -#ifdef DIAGNOSTIC - Debugger("putc to clist with no reserved cblocks"); -#endif - /* black-hole the character */ - return (0); + printf("putc to a clist with no reserved cblocks\n"); + return (-1); /* nothing done */ } cblockp = cblock_alloc(); clistp->c_cbcount = 1; @@ -434,12 +430,8 @@ b_to_q(src, amount, clistp) if (clistp->c_cl == NULL) { if (clistp->c_cbreserved < 1) { splx(s); - printf("b_to_q to a clist with no reserved cblocks: data discarded.\n"); -#ifdef DIAGNOSTIC - Debugger("b_to_q to clist with no reserved cblocks"); -#endif - /* black-hole the characters */ - return (0); + printf("b_to_q to a clist with no reserved cblocks.\n"); + return (amount); /* nothing done */ } cblockp = cblock_alloc(); clistp->c_cbcount = 1; |