[clang-tools-extra] r332518 - [clang-move] Fix a potential bug where realpath doesn't work on VFS.
Eric Liu via cfe-commits
cfe-commits at lists.llvm.org
Wed May 16 13:10:10 PDT 2018
Author: ioeric
Date: Wed May 16 13:10:10 2018
New Revision: 332518
URL: http://llvm.org/viewvc/llvm-project?rev=332518&view=rev
Log:
[clang-move] Fix a potential bug where realpath doesn't work on VFS.
Modified:
clang-tools-extra/trunk/clang-move/ClangMove.cpp
Modified: clang-tools-extra/trunk/clang-move/ClangMove.cpp
URL: http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/clang-move/ClangMove.cpp?rev=332518&r1=332517&r2=332518&view=diff
==============================================================================
--- clang-tools-extra/trunk/clang-move/ClangMove.cpp (original)
+++ clang-tools-extra/trunk/clang-move/ClangMove.cpp Wed May 16 13:10:10 2018
@@ -95,12 +95,16 @@ std::string MakeAbsolutePath(const Sourc
llvm::sys::path::parent_path(AbsolutePath.str()));
if (Dir) {
StringRef DirName = SM.getFileManager().getCanonicalName(Dir);
- SmallVector<char, 128> AbsoluteFilename;
- llvm::sys::path::append(AbsoluteFilename, DirName,
- llvm::sys::path::filename(AbsolutePath.str()));
- return llvm::StringRef(AbsoluteFilename.data(), AbsoluteFilename.size())
- .str();
+ // FIXME: getCanonicalName might fail to get real path on VFS.
+ if (llvm::sys::path::is_absolute(DirName)) {
+ SmallVector<char, 128> AbsoluteFilename;
+ llvm::sys::path::append(AbsoluteFilename, DirName,
+ llvm::sys::path::filename(AbsolutePath.str()));
+ return llvm::StringRef(AbsoluteFilename.data(), AbsoluteFilename.size())
+ .str();
+ }
}
+ llvm::sys::path::remove_dots(AbsolutePath, /*remove_dot_dot=*/true);
return AbsolutePath.str();
}
More information about the cfe-commits
mailing list