Browse Source

fix: use Unicode version of ShellExecute() in OpenExternalOnWorkerThread() (#20905)

trop[bot] 5 years ago
parent
commit
e2c7e4b1ad
1 changed files with 3 additions and 6 deletions
  1. 3 6
      shell/common/platform_util_win.cc

+ 3 - 6
shell/common/platform_util_win.cc

@@ -238,14 +238,11 @@ std::string OpenExternalOnWorkerThread(
   // Quote the input scheme to be sure that the command does not have
   // parameters unexpected by the external program. This url should already
   // have been escaped.
-  std::string escaped_url = url.spec();
-  escaped_url.insert(0, "\"");
-  escaped_url += "\"";
-
-  std::string working_dir = options.working_dir.AsUTF8Unsafe();
+  base::string16 escaped_url = L"\"" + base::UTF8ToUTF16(url.spec()) + L"\"";
+  base::string16 working_dir = options.working_dir.value();
 
   if (reinterpret_cast<ULONG_PTR>(
-          ShellExecuteA(nullptr, "open", escaped_url.c_str(), nullptr,
+          ShellExecuteW(nullptr, L"open", escaped_url.c_str(), nullptr,
                         working_dir.empty() ? nullptr : working_dir.c_str(),
                         SW_SHOWNORMAL)) <= 32) {
     return "Failed to open";