summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPeter Collingbourne <peter@pcc.me.uk>2015-06-19 22:40:05 +0000
committerPeter Collingbourne <peter@pcc.me.uk>2015-06-19 22:40:05 +0000
commit74ecc89c464a858f261ec279dd202dfafa476d7d (patch)
tree6711ab8078c0b3b11d483afba4eb4e2f0786c6b5
parentf00df0af2d0587ead9e36b7161206187e7b24622 (diff)
downloadbcm5719-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.cpp4
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());
OpenPOWER on IntegriCloud