From da4690ae1217a468096ce805619848a2e2842c68 Mon Sep 17 00:00:00 2001 From: Benjamin Kramer Date: Tue, 4 Aug 2015 11:27:08 +0000 Subject: [FileManager] Use StringRef::copy to store canonical paths. No functional change intended. llvm-svn: 243970 --- clang/lib/Basic/FileManager.cpp | 12 +++--------- 1 file changed, 3 insertions(+), 9 deletions(-) (limited to 'clang/lib/Basic/FileManager.cpp') diff --git a/clang/lib/Basic/FileManager.cpp b/clang/lib/Basic/FileManager.cpp index 034ebc5c88b..21e6ea3ab4b 100644 --- a/clang/lib/Basic/FileManager.cpp +++ b/clang/lib/Basic/FileManager.cpp @@ -570,12 +570,8 @@ StringRef FileManager::getCanonicalName(const DirectoryEntry *Dir) { #ifdef LLVM_ON_UNIX char CanonicalNameBuf[PATH_MAX]; - if (realpath(Dir->getName(), CanonicalNameBuf)) { - unsigned Len = strlen(CanonicalNameBuf); - char *Mem = static_cast(CanonicalNameStorage.Allocate(Len, 1)); - memcpy(Mem, CanonicalNameBuf, Len); - CanonicalName = StringRef(Mem, Len); - } + if (realpath(Dir->getName(), CanonicalNameBuf)) + CanonicalName = StringRef(CanonicalNameBuf).copy(CanonicalNameStorage); #else SmallString<256> CanonicalNameBuf(CanonicalName); llvm::sys::fs::make_absolute(CanonicalNameBuf); @@ -587,9 +583,7 @@ StringRef FileManager::getCanonicalName(const DirectoryEntry *Dir) { // Ideally we'd have an equivalent of `realpath` and could implement // sys::fs::canonical across all the platforms. removeDotPaths(CanonicalNameBuf, /*RemoveDotDot*/true); - char *Mem = CanonicalNameStorage.Allocate(CanonicalNameBuf.size()); - memcpy(Mem, CanonicalNameBuf.data(), CanonicalNameBuf.size()); - CanonicalName = StringRef(Mem, CanonicalNameBuf.size()); + CanonicalName = StringRef(CanonicalNameBuf).copy(CanonicalNameStorage); #endif CanonicalDirNames.insert(std::make_pair(Dir, CanonicalName)); -- cgit v1.2.3