diff options
| author | ruki <[email protected]> | 2019-07-03 00:07:56 +0800 |
|---|---|---|
| committer | ruki <[email protected]> | 2019-07-02 18:47:36 +0800 |
| commit | d2d5631acf568895010db3f2a1308a8871e945b0 (patch) | |
| tree | 480f6d40140fbb4b486aeb01f0a962a3964f0f2f /core/src | |
| parent | 4cde8391985f5c88c8f2efb5840354853203dd6b (diff) | |
fix fgetws
Diffstat (limited to 'core/src')
| -rw-r--r-- | core/src/xmake/sandbox/interactive.c | 6 |
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); } |
