From 92e130cb55d340d8b52b63c32760351d3c24e425 Mon Sep 17 00:00:00 2001
From: Vladislav Shpilevoy <v.shpilevoy@tarantool.org>
Date: Fri, 13 Apr 2018 00:41:08 +0300
Subject: [PATCH] console: fix a bug in interactive readline usage

Spurious wakeups are possible in console, that makes readline
think that there are some data on stdin. Waked up readline
returns garbage instead of string, that crashes a server on
assertion in Lua.

Closes #3343
---
 src/box/lua/console.c | 5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)

diff --git a/src/box/lua/console.c b/src/box/lua/console.c
index d27d7ecac3..7a5ac5550d 100644
--- a/src/box/lua/console.c
+++ b/src/box/lua/console.c
@@ -221,8 +221,9 @@ lbox_console_readline(struct lua_State *L)
 	 */
 	rl_callback_handler_install(prompt, console_push_line);
 	top = lua_gettop(L);
-	while (top == lua_gettop(L) &&
-	       coio_wait(STDIN_FILENO, COIO_READ, TIMEOUT_INFINITY)) {
+	while (top == lua_gettop(L)) {
+		while (coio_wait(STDIN_FILENO, COIO_READ,
+				 TIMEOUT_INFINITY) == 0);
 
 		rl_callback_read_char();
 	}
-- 
GitLab