diff options
| author | Serge Guelton <sguelton@redhat.com> | 2019-06-20 20:25:59 +0000 |
|---|---|---|
| committer | Serge Guelton <sguelton@redhat.com> | 2019-06-20 20:25:59 +0000 |
| commit | 60ca31a7ddabb46c9ea3762949629433c5eb4c8c (patch) | |
| tree | abd6878a7c01f0b1ec8bd08bfda0c550e9018028 /clang | |
| parent | 273d97e6bf4eef567499fd3bb0ff23eb6897de9b (diff) | |
| download | bcm5719-llvm-60ca31a7ddabb46c9ea3762949629433c5eb4c8c.tar.gz bcm5719-llvm-60ca31a7ddabb46c9ea3762949629433c5eb4c8c.zip | |
[clang-tidy] Fail gracefully upon empty database fields
Fix bz#42281
Differential Revision: https://reviews.llvm.org/D63613
llvm-svn: 363975
Diffstat (limited to 'clang')
| -rw-r--r-- | clang/lib/Tooling/InterpolatingCompilationDatabase.cpp | 6 | ||||
| -rw-r--r-- | clang/lib/Tooling/Tooling.cpp | 2 |
2 files changed, 5 insertions, 3 deletions
diff --git a/clang/lib/Tooling/InterpolatingCompilationDatabase.cpp b/clang/lib/Tooling/InterpolatingCompilationDatabase.cpp index 8b1030f3607..a467d1318e2 100644 --- a/clang/lib/Tooling/InterpolatingCompilationDatabase.cpp +++ b/clang/lib/Tooling/InterpolatingCompilationDatabase.cpp @@ -150,7 +150,8 @@ struct TransferableCommand { // spelling of each argument; re-rendering is lossy for aliased flags. // E.g. in CL mode, /W4 maps to -Wall. auto OptTable = clang::driver::createDriverOptTable(); - Cmd.CommandLine.emplace_back(OldArgs.front()); + if (!OldArgs.empty()) + Cmd.CommandLine.emplace_back(OldArgs.front()); for (unsigned Pos = 1; Pos < OldArgs.size();) { using namespace driver::options; @@ -243,7 +244,8 @@ private: } // Otherwise just check the clang executable file name. - return llvm::sys::path::stem(CmdLine.front()).endswith_lower("cl"); + return !CmdLine.empty() && + llvm::sys::path::stem(CmdLine.front()).endswith_lower("cl"); } // Map the language from the --std flag to that of the -x flag. diff --git a/clang/lib/Tooling/Tooling.cpp b/clang/lib/Tooling/Tooling.cpp index 68760ef7569..a7c64866a48 100644 --- a/clang/lib/Tooling/Tooling.cpp +++ b/clang/lib/Tooling/Tooling.cpp @@ -481,7 +481,7 @@ int ClangTool::run(ToolAction *Action) { if (OverlayFileSystem->setCurrentWorkingDirectory( CompileCommand.Directory)) llvm::report_fatal_error("Cannot chdir into \"" + - Twine(CompileCommand.Directory) + "\n!"); + Twine(CompileCommand.Directory) + "\"!"); // Now fill the in-memory VFS with the relative file mappings so it will // have the correct relative paths. We never remove mappings but that |

