Unverified Commit f8cd9b0f authored by Feng Xiao's avatar Feng Xiao Committed by GitHub

Merge pull request #5105 from sigurdm/invoke_plugin_via_cmd

On Windows invoke plugins using cmd.exe
parents 3bf0245f 4e5ae963
......@@ -124,14 +124,15 @@ void Subprocess::Start(const string& program, SearchMode search_mode) {
<< Win32ErrorMessage(GetLastError());
}
// CreateProcess() mutates its second parameter. WTF?
char* name_copy = portable_strdup(program.c_str());
// Invoking cmd.exe allows for '.bat' files from the path as well as '.exe'.
// Using a malloc'ed string because CreateProcess() can mutate its second parameter. (WTF).
char *command_line = portable_strdup(("cmd.exe /c \"" + program + "\"").c_str());
// Create the process.
PROCESS_INFORMATION process_info;
if (CreateProcessA((search_mode == SEARCH_PATH) ? NULL : program.c_str(),
(search_mode == SEARCH_PATH) ? name_copy : NULL,
(search_mode == SEARCH_PATH) ? command_line : NULL,
NULL, // process security attributes
NULL, // thread security attributes
TRUE, // inherit handles?
......@@ -152,7 +153,7 @@ void Subprocess::Start(const string& program, SearchMode search_mode) {
CloseHandleOrDie(stdin_pipe_read);
CloseHandleOrDie(stdout_pipe_write);
free(name_copy);
free(command_line);
}
bool Subprocess::Communicate(const Message& input, Message* output,
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment