summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--core/src/xmake/sandbox/interactive.c6
1 files 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);
}