diff options
| author | Peter Collingbourne <peter@pcc.me.uk> | 2015-06-19 22:40:05 +0000 |
|---|---|---|
| committer | Peter Collingbourne <peter@pcc.me.uk> | 2015-06-19 22:40:05 +0000 |
| commit | 74ecc89c464a858f261ec279dd202dfafa476d7d (patch) | |
| tree | 6711ab8078c0b3b11d483afba4eb4e2f0786c6b5 | |
| parent | f00df0af2d0587ead9e36b7161206187e7b24622 (diff) | |
| download | bcm5719-llvm-74ecc89c464a858f261ec279dd202dfafa476d7d.tar.gz bcm5719-llvm-74ecc89c464a858f261ec279dd202dfafa476d7d.zip | |
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
| -rw-r--r-- | lld/COFF/DriverUtils.cpp | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/lld/COFF/DriverUtils.cpp b/lld/COFF/DriverUtils.cpp index 7328606c64d..129b1b43cbf 100644 --- a/lld/COFF/DriverUtils.cpp +++ b/lld/COFF/DriverUtils.cpp @@ -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()); |

