From 32732d4f76797a8291c1ebbb18166e97184ac7c1 Mon Sep 17 00:00:00 2001 From: Oldes Date: Tue, 18 Dec 2018 22:15:18 +0100 Subject: [PATCH] FEAT: throwing error if QUERY on INPUT port fails from some reason --- src/core/p-console.c | 6 +++++- src/os/win32/dev-stdio.c | 5 ++++- 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/src/core/p-console.c b/src/core/p-console.c index 4a4012ad7f..f64eaaeaa5 100644 --- a/src/core/p-console.c +++ b/src/core/p-console.c @@ -138,7 +138,11 @@ Set_Block(D_RET, Get_Object_Words(spec)); return R_RET; } - if (OS_DO_DEVICE(req, RDC_QUERY) < 0) return R_NONE; + if (OS_DO_DEVICE(req, RDC_QUERY) < 0) { + SET_INTEGER(arg, req->error); + Trap1(RE_PROTOCOL, arg); + //return R_NONE; + } Ret_Query_Console(req, D_RET, D_ARG(ARG_QUERY_FIELD), spec); break; diff --git a/src/os/win32/dev-stdio.c b/src/os/win32/dev-stdio.c index 2d3acec099..caa5b22ef1 100644 --- a/src/os/win32/dev-stdio.c +++ b/src/os/win32/dev-stdio.c @@ -463,7 +463,10 @@ static void close_stdio(void) ***********************************************************************/ { CONSOLE_SCREEN_BUFFER_INFO csbiInfo; - GetConsoleScreenBufferInfo(Std_Out, &csbiInfo); + if(0 == GetConsoleScreenBufferInfo(Std_Out, &csbiInfo)) { + req->error = GetLastError(); + return DR_ERROR; + } req->console.buffer_rows = csbiInfo.dwSize.Y; req->console.buffer_cols = csbiInfo.dwSize.X; req->console.window_rows = csbiInfo.srWindow.Bottom - csbiInfo.srWindow.Top + 1;