From d2d5631acf568895010db3f2a1308a8871e945b0 Mon Sep 17 00:00:00 2001 From: ruki Date: Wed, 3 Jul 2019 00:07:56 +0800 Subject: fix fgetws --- core/src/xmake/sandbox/interactive.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/core/src/xmake/sandbox/interactive.c b/core/src/xmake/sandbox/interactive.c index e578c236b..fa31b6cd1 100644 --- a/core/src/xmake/sandbox/interactive.c +++ b/core/src/xmake/sandbox/interactive.c @@ -175,10 +175,12 @@ static tb_size_t xm_sandbox_readline(tb_char_t* data, tb_size_t maxn, tb_char_t tb_print_sync(); # ifdef TB_CONFIG_OS_WINDOWS - tb_wchar_t buf[LUA_PROMPT_BUFSIZE]; // get input buffer - if (fgetws(buf, (tb_int_t)(maxn / 3), stdin)) + DWORD len = 0; + tb_wchar_t buf[LUA_PROMPT_BUFSIZE]; + if (ReadConsoleW(GetStdHandle(STD_INPUT_HANDLE), buf, (DWORD)tb_min(maxn / 3, tb_arrayn(buf)), &len, tb_null) && len < tb_arrayn(buf)) { + buf[len] = L'\0'; xm_wcstoutf8(data, buf, maxn); return tb_strlen(data); } -- cgit v1.3.1