From 99454e4a90e5014a63b8d247e0031de18cc571cc Mon Sep 17 00:00:00 2001 From: Ingo Weinhold Date: Wed, 3 Oct 2007 19:07:51 +0000 Subject: [PATCH] If the ring buffer is full line_buffer_readable_line() returns the buffer size in case the buffer does not contain an EOL or EOF. This prevents readers from waiting infinitely, if canonical input processing is enabled in that situation. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@22422 a95241bf-73f2-0310-859d-f6bbb57e9c96 --- src/add-ons/kernel/drivers/tty/line_buffer.cpp | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/add-ons/kernel/drivers/tty/line_buffer.cpp b/src/add-ons/kernel/drivers/tty/line_buffer.cpp index dcd035b523..d051fd3bb3 100644 --- a/src/add-ons/kernel/drivers/tty/line_buffer.cpp +++ b/src/add-ons/kernel/drivers/tty/line_buffer.cpp @@ -63,7 +63,9 @@ line_buffer_readable_line(struct line_buffer &buffer, char eol, char eof) return i + 1; } - return 0; + // If the buffer is full, but doesn't contain a EOL or EOF, we report the + // full size anyway, since otherwise the reader would wait forever. + return buffer.in == buffer.size ? buffer.in : 0; }