diff options
author | Samuel Thibault <samuel.thibault@ens-lyon.org> | 2016-05-26 01:09:59 +0200 |
---|---|---|
committer | Samuel Thibault <samuel.thibault@ens-lyon.org> | 2016-05-26 01:09:59 +0200 |
commit | c7efce2d405bc49efc159b9f25b86052a7b0c584 (patch) | |
tree | 9954adb8a6b6cc288334f8e76d7f63aebd13dbe8 /i386/i386at/lpr.c | |
parent | f044547a073303e0268481211c7d06373ca85011 (diff) | |
download | gnumach-c7efce2d405bc49efc159b9f25b86052a7b0c584.tar.gz gnumach-c7efce2d405bc49efc159b9f25b86052a7b0c584.tar.bz2 gnumach-c7efce2d405bc49efc159b9f25b86052a7b0c584.zip |
Cope with getc returning -1
* i386/i386at/lpr.c (lprstart): Use int instead of char to store result of
getc, so as to return in case of getting -1.
Diffstat (limited to 'i386/i386at/lpr.c')
-rw-r--r-- | i386/i386at/lpr.c | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/i386/i386at/lpr.c b/i386/i386at/lpr.c index 73c4261b..8303be59 100644 --- a/i386/i386at/lpr.c +++ b/i386/i386at/lpr.c @@ -232,7 +232,7 @@ void lprstart(struct tty *tp) spl_t s = spltty(); u_short addr = (natural_t) tp->t_addr; int status = inb(STATUS(addr)); - char nch; + int nch; if (tp->t_state & (TS_TIMEOUT|TS_TTSTOP|TS_BUSY)) { splx(s); @@ -253,6 +253,10 @@ void lprstart(struct tty *tp) return; } nch = getc(&tp->t_outq); + if (nch == -1) { + splx(s); + return; + } if ((tp->t_flags & LITOUT) == 0 && (nch & 0200)) { timeout((timer_func_t *)ttrstrt, (char *)tp, (nch & 0x7f) + 6); tp->t_state |= TS_TIMEOUT; |