Index: src/IceBrowserCompileServer.cpp |
diff --git a/src/IceBrowserCompileServer.cpp b/src/IceBrowserCompileServer.cpp |
index 6a9ee65912eaaa27238a1fcbcb9291872070dfbe..85c2efe89ebc11ea1530bd54c89111a747744686 100644 |
--- a/src/IceBrowserCompileServer.cpp |
+++ b/src/IceBrowserCompileServer.cpp |
@@ -41,7 +41,7 @@ void getIRTInterfaces() { |
} |
char *onInitCallback(uint32_t NumThreads, int *ObjFileFDs, |
- size_t ObjFileFDCount, char **argv, size_t argc) { |
+ size_t ObjFileFDCount, char **CLArgs, size_t CLArgsLen) { |
if (ObjFileFDCount < 1) { |
std::string Buffer; |
llvm::raw_string_ostream StrBuf(Buffer); |
@@ -56,8 +56,17 @@ char *onInitCallback(uint32_t NumThreads, int *ObjFileFDs, |
StrBuf << "Invalid FD given for onInitCallback " << ObjFileFD << "\n"; |
return strdup(StrBuf.str().c_str()); |
} |
- // NOTE: argv is owned by the caller, but we parse here before returning. |
- gCompileServer->getParsedFlags(NumThreads, argc, argv); |
+ // CLArgs is almost an "argv", but is missing the argv[0] program name. |
+ std::vector<char *> Argv; |
Mircea Trofin
2015/03/31 17:24:04
you could just
std::vector<char *> Argv(CLArgsLen
Jim Stichnoth
2015/03/31 17:26:44
True, but then the push_back() calls have to be re
jvoung (off chromium)
2015/03/31 20:41:16
Hmm, I'll stick with reserve() then. Another optio
|
+ char ProgramName[] = "pnacl-sz.nexe"; |
+ Argv.reserve(CLArgsLen + 1); |
+ Argv.push_back(ProgramName); |
+ for (size_t i = 0; i < CLArgsLen; ++i) { |
+ Argv.push_back(CLArgs[i]); |
+ } |
+ // NOTE: strings pointed to by argv are owned by the caller, but we parse |
+ // here before returning and don't store them. |
+ gCompileServer->getParsedFlags(NumThreads, Argv.size(), Argv.data()); |
gCompileServer->startCompileThread(ObjFileFD); |
return nullptr; |
} |