summaryrefslogtreecommitdiff
path: root/include
diff options
context:
space:
mode:
authorMichael J. Spencer <bigcheesegs@gmail.com>2014-05-22 23:32:18 +0000
committerMichael J. Spencer <bigcheesegs@gmail.com>2014-05-22 23:32:18 +0000
commitc86ebbd01eba02ff04ffb57537e24f2aa7b8795d (patch)
tree4f82678f96046bb5337d61ecbe0ebc208e0c693c /include
parentef518f1cbb7311808398b008e6628bcc995790b3 (diff)
downloadllvm-c86ebbd01eba02ff04ffb57537e24f2aa7b8795d.tar.gz
llvm-c86ebbd01eba02ff04ffb57537e24f2aa7b8795d.tar.bz2
llvm-c86ebbd01eba02ff04ffb57537e24f2aa7b8795d.tar.xz
[Graph Writer] Limit the length of the graph name because Windows can't handle it.
Windows can't handle paths longer than 260 code points without \\?\. Even with \\?\ it can't handle path components longer than 255 code points. So limit graph names to the arbitrary length of 140. Random characters are still added to the end, so it's ok if graph names collide. Differential Revision: http://reviews.llvm.org/D3883 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@209483 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'include')
-rw-r--r--include/llvm/Support/GraphWriter.h5
1 files changed, 4 insertions, 1 deletions
diff --git a/include/llvm/Support/GraphWriter.h b/include/llvm/Support/GraphWriter.h
index 660c519ed6..539673a8be 100644
--- a/include/llvm/Support/GraphWriter.h
+++ b/include/llvm/Support/GraphWriter.h
@@ -325,7 +325,10 @@ template <typename GraphType>
std::string WriteGraph(const GraphType &G, const Twine &Name,
bool ShortNames = false, const Twine &Title = "") {
int FD;
- std::string Filename = createGraphFilename(Name, FD);
+ // Windows can't always handle long paths, so limit the length of the name.
+ std::string N = Name.str();
+ N = N.substr(0, std::min<std::size_t>(N.size(), 140));
+ std::string Filename = createGraphFilename(N, FD);
raw_fd_ostream O(FD, /*shouldClose=*/ true);
if (FD == -1) {