diff options
author | Chad Rosier <mcrosier@apple.com> | 2012-05-04 15:32:05 +0000 |
---|---|---|
committer | Chad Rosier <mcrosier@apple.com> | 2012-05-04 15:32:05 +0000 |
commit | aaec1338b1a504ea92fcc5c4297e5b942b56ea10 (patch) | |
tree | f8a7e07f271dcc42248df3a5947a967088cd65f0 /clang/lib/Driver/Driver.cpp | |
parent | 14afc075771e009c8c956351b223d3611e71524d (diff) | |
download | bcm5719-llvm-aaec1338b1a504ea92fcc5c4297e5b942b56ea10.tar.gz bcm5719-llvm-aaec1338b1a504ea92fcc5c4297e5b942b56ea10.zip |
StringRefize code because we're good even when we crash.
Patch by Jordy Rose.
llvm-svn: 156172
Diffstat (limited to 'clang/lib/Driver/Driver.cpp')
-rw-r--r-- | clang/lib/Driver/Driver.cpp | 12 |
1 files changed, 6 insertions, 6 deletions
diff --git a/clang/lib/Driver/Driver.cpp b/clang/lib/Driver/Driver.cpp index 3e7a5a23de2..872be32b79b 100644 --- a/clang/lib/Driver/Driver.cpp +++ b/clang/lib/Driver/Driver.cpp @@ -528,12 +528,12 @@ void Driver::generateCompilationDiagnostics(Compilation &C, I += 16; E = Cmd.find(" ", I); assert (E != std::string::npos && "-main-file-name missing argument?"); - std::string OldFilename = Cmd.substr(I, E - I); - std::string NewFilename = llvm::sys::path::filename(*it).str(); - I = Cmd.rfind(OldFilename); - E = I + OldFilename.length() - 1; - I = Cmd.rfind(" ", I); - Cmd.replace(I + 1, E - I, NewFilename); + StringRef OldFilename = StringRef(Cmd).slice(I, E); + StringRef NewFilename = llvm::sys::path::filename(*it); + I = StringRef(Cmd).rfind(OldFilename); + E = I + OldFilename.size(); + I = Cmd.rfind(" ", I) + 1; + Cmd.replace(I, E - I, NewFilename.data(), NewFilename.size()); ScriptOS << Cmd; Diag(clang::diag::note_drv_command_failed_diag_msg) << Script; } |