From beb62566e473268e9522618d374a90302d18da2e Mon Sep 17 00:00:00 2001 From: Cheng Zhao Date: Fri, 16 Aug 2013 18:48:02 +0800 Subject: [PATCH] [Win] Fix the command line spliting code. --- app/atom_main.cc | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/app/atom_main.cc b/app/atom_main.cc index 34e3b63..618e54b 100644 --- a/app/atom_main.cc +++ b/app/atom_main.cc @@ -13,22 +13,23 @@ int Start(int argc, char *argv[]); #if defined(OS_WIN) #include // NOLINT +#include // NOLINT #include "app/atom_main_delegate.h" #include "content/public/app/startup_helper_win.h" #include "sandbox/win/src/sandbox_types.h" -int APIENTRY wWinMain(HINSTANCE instance, HINSTANCE, wchar_t* wargv, int argc) { - const wchar_t* wargv1 = reinterpret_cast(wargv[1]); - if (argc > 1 && wcscmp(wargv1, L"--atom-child_process-fork") == 0) { +int APIENTRY wWinMain(HINSTANCE instance, HINSTANCE, wchar_t* cmd, int) { + int argc = 0; + wchar_t** wargv = ::CommandLineToArgvW(cmd, &argc); + if (argc > 1 && wcscmp(wargv[1], L"--atom-child_process-fork") == 0) { // Convert argv to to UTF8 char** argv = new char*[argc]; for (int i = 0; i < argc; i++) { - const wchar_t* wargvi = reinterpret_cast(wargv[i]); // Compute the size of the required buffer DWORD size = WideCharToMultiByte(CP_UTF8, 0, - wargvi, + wargv[i], -1, NULL, 0, @@ -43,7 +44,7 @@ int APIENTRY wWinMain(HINSTANCE instance, HINSTANCE, wchar_t* wargv, int argc) { argv[i] = new char[size]; DWORD result = WideCharToMultiByte(CP_UTF8, 0, - wargvi, + wargv[i], -1, argv[i], size, -- 2.7.4