summaryrefslogtreecommitdiff
path: root/core/src
diff options
context:
space:
mode:
authorruki <[email protected]>2019-07-03 00:07:56 +0800
committerruki <[email protected]>2019-07-02 18:47:36 +0800
commitd2d5631acf568895010db3f2a1308a8871e945b0 (patch)
tree480f6d40140fbb4b486aeb01f0a962a3964f0f2f /core/src
parent4cde8391985f5c88c8f2efb5840354853203dd6b (diff)
fix fgetws
Diffstat (limited to 'core/src')
-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);
}