Author: d0k Date: Tue Aug 4 06:27:08 2015 New Revision: 243970 URL: http://llvm.org/viewvc/llvm-project?rev=243970&view=rev Log: [FileManager] Use StringRef::copy to store canonical paths.
No functional change intended. Modified: cfe/trunk/lib/Basic/FileManager.cpp Modified: cfe/trunk/lib/Basic/FileManager.cpp URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Basic/FileManager.cpp?rev=243970&r1=243969&r2=243970&view=diff ============================================================================== --- cfe/trunk/lib/Basic/FileManager.cpp (original) +++ cfe/trunk/lib/Basic/FileManager.cpp Tue Aug 4 06:27:08 2015 @@ -570,12 +570,8 @@ StringRef FileManager::getCanonicalName( #ifdef LLVM_ON_UNIX char CanonicalNameBuf[PATH_MAX]; - if (realpath(Dir->getName(), CanonicalNameBuf)) { - unsigned Len = strlen(CanonicalNameBuf); - char *Mem = static_cast<char *>(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( // 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<char>(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)); _______________________________________________ cfe-commits mailing list cfe-commits@cs.uiuc.edu http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits