aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorJustin M. Keyes <justinkz@gmail.com>2017-08-24 09:31:08 +0200
committerGitHub <noreply@github.com>2017-08-24 09:31:08 +0200
commit0f2873ce99437a0267eb777201f2e98f22757c2d (patch)
tree4a75302c49a43d6c6f2dd065bda32c36e4784b9a /src
parentda84f7dcf9dab28a03b9a776f04d882c36fd77fb (diff)
parent02e5eafa86c729cee238ed6166a560ed9a555fc8 (diff)
downloadrneovim-0f2873ce99437a0267eb777201f2e98f22757c2d.tar.gz
rneovim-0f2873ce99437a0267eb777201f2e98f22757c2d.tar.bz2
rneovim-0f2873ce99437a0267eb777201f2e98f22757c2d.zip
Merge #7205 from justinmk/win-wmain
Diffstat (limited to 'src')
-rw-r--r--src/nvim/main.c20
1 files changed, 7 insertions, 13 deletions
diff --git a/src/nvim/main.c b/src/nvim/main.c
index af614762ac..024c56dd05 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
+#if defined(WIN32) && !defined(MAKE_LIB)
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