aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJustin M. Keyes <justinkz@gmail.com>2017-08-23 01:17:59 +0200
committerJustin M. Keyes <justinkz@gmail.com>2017-08-24 08:42:45 +0200
commit71df5dde6d99da73eaea1989a309ffe2a5c7689d (patch)
tree557f70865ef6d0dce61df41d39e284d8d1adb942
parente5565891af5858965a65366ecb7f791abc988931 (diff)
downloadrneovim-71df5dde6d99da73eaea1989a309ffe2a5c7689d.tar.gz
rneovim-71df5dde6d99da73eaea1989a309ffe2a5c7689d.tar.bz2
rneovim-71df5dde6d99da73eaea1989a309ffe2a5c7689d.zip
win: wmain(): use utf16_to_utf8() #7060
-rw-r--r--src/nvim/main.c18
1 files changed, 6 insertions, 12 deletions
diff --git a/src/nvim/main.c b/src/nvim/main.c
index af614762ac..53a1342b2a 100644
--- a/src/nvim/main.c
+++ b/src/nvim/main.c
@@ -220,24 +220,18 @@ void early_init(void)
#ifdef MAKE_LIB
int nvim_main(int argc, char **argv)
-#elif defined WIN32
-// don't use codepage encoded arguments. see #7060
-int wmain(int argc, wchar_t **argv_w)
+#elif defined(WIN32)
+int wmain(int argc, wchar_t **argv_w) // multibyte args on Windows. #7060
#else
int main(int argc, char **argv)
#endif
{
#ifdef WIN32
char *argv[argc];
-
- for (size_t i = 0; i < (size_t)argc; i++) {
- // get required buffer size
- size_t dest_size = (size_t)WideCharToMultiByte(
- CP_UTF8, 0, argv_w[i], -1, NULL, 0, NULL, NULL);
- char *buf = (char *)xmallocz(dest_size);
- // convert from utf16 (widechar) utf8 (multibyte)
- WideCharToMultiByte(CP_UTF8, 0, argv_w[i], -1, buf, (int)dest_size,
- NULL, NULL);
+ for (int i = 0; i < argc; i++) {
+ char *buf = NULL;
+ utf16_to_utf8(argv_w[i], &buf);
+ assert(buf);
argv[i] = buf;
}
#endif