From 258a600ea4fea24fdd7e2e0ddcef998232cd3533 Mon Sep 17 00:00:00 2001 From: meilinxiaoxue Date: Fri, 27 Sep 2024 13:34:21 +0800 Subject: [PATCH] bugfix: handle space in file name --- src/main.cpp | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/src/main.cpp b/src/main.cpp index 53e2435..5c38901 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -470,18 +470,19 @@ int WINAPI wWinMain(_In_ HINSTANCE instance, _In_opt_ HINSTANCE prev_instance, _ // Otherwise assume the argument is a filename to open else { // Otherwise assume switch is for nvim initialization - const size_t arg_len = wcslen(cmd_line_args[i]) + 1 /* space */; - if (nvim_cmd_len + arg_len >= 32767) { + const size_t arg_len = wcslen(cmd_line_args[i]) /* space */; + if (nvim_cmd_len + arg_len + 4 >= 32767) { MessageBoxA(NULL, "ERROR: File path too long", "Nvy", MB_OK | MB_ICONERROR); return 1; } - wchar_t *tmp = static_cast(realloc(nvim_cmd, sizeof(wchar_t) * (nvim_cmd_len + arg_len + 1))); + size_t tmp_len = sizeof(wchar_t) * (nvim_cmd_len + arg_len + 4); + wchar_t *tmp = static_cast(realloc(nvim_cmd, tmp_len)); if (tmp) { nvim_cmd = tmp; - nvim_cmd[nvim_cmd_len] = L' '; - wmemcpy_s(nvim_cmd + nvim_cmd_len + 1, arg_len, cmd_line_args[i], arg_len); - nvim_cmd_len += arg_len; - nvim_cmd[nvim_cmd_len] = 0; + nvim_cmd_len = tmp_len; + wcscat_s(nvim_cmd, tmp_len, L" \""); + wcscat_s(nvim_cmd, tmp_len,cmd_line_args[i]); + wcscat_s(nvim_cmd, tmp_len, L"\""); } else { break; // not enough memory to continue }