]> granicus.if.org Git - clang/commitdiff
StringRefize code because we're good even when we crash.
authorChad Rosier <mcrosier@apple.com>
Fri, 4 May 2012 15:32:05 +0000 (15:32 +0000)
committerChad Rosier <mcrosier@apple.com>
Fri, 4 May 2012 15:32:05 +0000 (15:32 +0000)
Patch by Jordy Rose.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@156172 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Driver/Driver.cpp

index 3e7a5a23de2b1c92284c4041758724f713e3063a..872be32b79b8797c40868536f6402254a723b0db 100644 (file)
@@ -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;
       }