[llvm] [Support] Resolve symlinks in `getMainExecutable()` on Windows (PR #76304)

Alexandre Ganea via llvm-commits llvm-commits at lists.llvm.org
Sun Dec 24 10:54:12 PST 2023


================
@@ -154,7 +154,10 @@ std::string getMainExecutable(const char *argv0, void *MainExecAddr) {
     return "";
 
   llvm::sys::path::make_preferred(PathNameUTF8);
-  return std::string(PathNameUTF8.data());
+
+  SmallString<256> RealPath;
+  sys::fs::real_path(PathNameUTF8, RealPath);
+  return (std::string)RealPath;
----------------
aganea wrote:

> Please use `.str()` rather than a C-style cast.

I used `(std::string)` because `SmallString` has a `explicit operator std::string() const`.
You meant I should use `RealPath.str().str()`? (first `.str()` gives a `StringRef`, the second a `std::string`).

https://github.com/llvm/llvm-project/pull/76304


More information about the llvm-commits mailing list