COFF: Take reference to argument vector using std::vector::data() instead of operator[](0).
This avoids undefined behaviour caused by an out-of-range access if the vector is empty, which can happen if an object file's directive section contains only whitespace. llvm-svn: 240183
This commit is contained in:
parent
f00df0af2d
commit
74ecc89c46
|
|
@ -557,7 +557,7 @@ ArgParser::parse(std::vector<const char *> Argv) {
|
|||
unsigned MissingIndex;
|
||||
unsigned MissingCount;
|
||||
std::unique_ptr<llvm::opt::InputArgList> Args(Table.ParseArgs(
|
||||
&Argv[0], &Argv[0] + Argv.size(), MissingIndex, MissingCount));
|
||||
Argv.data(), Argv.data() + Argv.size(), MissingIndex, MissingCount));
|
||||
if (MissingCount) {
|
||||
llvm::errs() << "missing arg value for \""
|
||||
<< Args->getArgString(MissingIndex)
|
||||
|
|
@ -587,7 +587,7 @@ std::vector<const char *> ArgParser::tokenize(StringRef S) {
|
|||
// character. '@<filename>' is replaced by the file's contents.
|
||||
ErrorOr<std::vector<const char *>>
|
||||
ArgParser::replaceResponseFiles(std::vector<const char *> Argv) {
|
||||
SmallVector<const char *, 256> Tokens(&Argv[0], &Argv[0] + Argv.size());
|
||||
SmallVector<const char *, 256> Tokens(Argv.data(), Argv.data() + Argv.size());
|
||||
BumpPtrStringSaver Saver(AllocAux);
|
||||
ExpandResponseFiles(Saver, TokenizeWindowsCommandLine, Tokens);
|
||||
return std::vector<const char *>(Tokens.begin(), Tokens.end());
|
||||
|
|
|
|||
Loading…
Reference in New Issue