From 398c0a7c6a19634d29ff046a6d5f500114a3d5e2 Mon Sep 17 00:00:00 2001 From: Cheng Zhao Date: Mon, 1 Jul 2013 21:44:25 +0800 Subject: [PATCH] Implement converting string vector to char pointer array on Windows. --- common/node_bindings.cc | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/common/node_bindings.cc b/common/node_bindings.cc index db69051216cd..6b351e367b3f 100644 --- a/common/node_bindings.cc +++ b/common/node_bindings.cc @@ -7,6 +7,7 @@ #include "base/command_line.h" #include "base/files/file_path.h" #include "base/logging.h" +#include "base/strings/utf_string_conversions.h" #include "v8/include/v8.h" #include "third_party/WebKit/Source/WebKit/chromium/public/WebDocument.h" #include "third_party/WebKit/Source/WebKit/chromium/public/WebFrame.h" @@ -26,10 +27,21 @@ NodeBindings::~NodeBindings() { void NodeBindings::Initialize() { CommandLine::StringVector str_argv = CommandLine::ForCurrentProcess()->argv(); +#if defined(OS_WIN) + std::vector utf8_str_argv; + utf8_str_argv.reserve(str_argv.size()); +#endif + // Convert string vector to char* array. std::vector argv(str_argv.size(), NULL); - for (size_t i = 0; i < str_argv.size(); ++i) + for (size_t i = 0; i < str_argv.size(); ++i) { +#if defined(OS_WIN) + utf8_str_argv.push_back(UTF16ToUTF8(str_argv[i])); + argv[i] = const_cast(utf8_str_argv[i].c_str()); +#else argv[i] = const_cast(str_argv[i].c_str()); +#endif + } // Open node's error reporting system for browser process. node::g_standalone_mode = is_browser_;