From e3742f4217e46f42c4f0506c23b04b84fc31e7ad Mon Sep 17 00:00:00 2001 From: Denis Vlasenko Date: Sat, 18 Oct 2008 19:37:41 +0000 Subject: [PATCH] vi: explain why reading 4 chars is unsafe --- editors/vi.c | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/editors/vi.c b/editors/vi.c index acbede359..8944f770a 100644 --- a/editors/vi.c +++ b/editors/vi.c @@ -2243,9 +2243,11 @@ static char readit(void) // read (maybe cursor) key from stdin n = chars_to_parse; if (n == 0) { - // If no data, block waiting for input - // (can't read more than minimal ESC sequence - - // see "n = 0" below). + // If no data, block waiting for input. + // Can't read more than minimal ESC sequence size - + // see "n = 0" below. Example of mishandled + // sequence if we read 4 chars here: "ESC O A ESC O A". + // We'll read "ESC O A ESC" and lose second ESC! n = safe_read(0, readbuffer, 3); if (n <= 0) { error: