]> granicus.if.org Git - clang/commitdiff
Fix an unsafe use of Twine.
authorBenjamin Kramer <benny.kra@googlemail.com>
Mon, 7 Nov 2011 16:02:25 +0000 (16:02 +0000)
committerBenjamin Kramer <benny.kra@googlemail.com>
Mon, 7 Nov 2011 16:02:25 +0000 (16:02 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@143962 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Driver/Tools.cpp

index 88d1e5210acab8f44db876c7bfee311fb1f88a59..64b538d145217d8b99bba8d5b25f2134a51cae0c 100644 (file)
@@ -157,15 +157,14 @@ static void addProfileRT(const ToolChain &TC, const ArgList &Args,
   // the link line. We cannot do the same thing because unlike gcov there is a
   // libprofile_rt.so. We used to use the -l:libprofile_rt.a syntax, but that is
   // not supported by old linkers.
-  Twine ProfileRT =
-    Twine(TC.getDriver().Dir) + "/../lib/" + "libprofile_rt.a";
+  std::string ProfileRT =
+    std::string(TC.getDriver().Dir) + "/../lib/libprofile_rt.a";
 
   if (Triple.isOSDarwin()) {
     // On Darwin, if the static library doesn't exist try the dylib.
     bool Exists;
-    if (llvm::sys::fs::exists(ProfileRT.str(), Exists) || !Exists)
-      ProfileRT =
-        Twine(TC.getDriver().Dir) + "/../lib/" + "libprofile_rt.dylib";
+    if (llvm::sys::fs::exists(ProfileRT, Exists) || !Exists)
+      ProfileRT.replace(ProfileRT.size() - 1, 1, "dylib");
   }
 
   CmdArgs.push_back(Args.MakeArgString(ProfileRT));