From 7e5ebe88f7e69264ea25bc04aca5a41c7ff6fd88 Mon Sep 17 00:00:00 2001 From: Mariano Alvira Date: Tue, 6 Jul 2010 09:34:23 -0400 Subject: [PATCH] properly drop characters when buffer is full fix by David Kopf --- lib/uart1.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/lib/uart1.c b/lib/uart1.c index 672c795e4..b5bd78011 100644 --- a/lib/uart1.c +++ b/lib/uart1.c @@ -65,8 +65,9 @@ void uart1_putc(char c) { u1_head += 1; if (u1_head >= sizeof(u1_tx_buf)) u1_head = 0; - if (u1_head == u1_tail) /* drop chars when no room */ - return; + if (u1_head == u1_tail) { /* drop chars when no room */ + if (u1_head) { u1_head -=1; } else { u1_head = sizeof(u1_tx_buf); } + } enable_irq(UART1); } }