From 37321196a4d2a3893422a9f628de41a8a128b47f Mon Sep 17 00:00:00 2001 From: rsc Date: Thu, 30 Aug 2007 18:20:53 +0000 Subject: [PATCH] oops - broke circular buffer --- console.c | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/console.c b/console.c index 236beaa..486dfe9 100644 --- a/console.c +++ b/console.c @@ -219,7 +219,7 @@ console_intr(int (*getc)(void)) break; default: if(c != 0 && input.e < input.r+INPUT_BUF){ - input.buf[input.e++] = c; + input.buf[input.e++ % INPUT_BUF] = c; cons_putc(c); if(c == '\n' || c == C('D') || input.e == input.r+INPUT_BUF){ input.w = input.e; @@ -250,7 +250,7 @@ console_read(struct inode *ip, char *dst, int n) } sleep(&input.r, &input.lock); } - c = input.buf[input.r++]; + c = input.buf[input.r++ % INPUT_BUF]; if(c == C('D')){ // EOF if(n < target){ // Save ^D for next time, to make sure @@ -263,8 +263,6 @@ console_read(struct inode *ip, char *dst, int n) --n; if(c == '\n') break; - if(input.r >= INPUT_BUF) - input.r = 0; } release(&input.lock); ilock(ip);