diff --git a/dataflow/src/main/java/org/checkerframework/dataflow/cfg/visualize/DOTCFGVisualizer.java b/dataflow/src/main/java/org/checkerframework/dataflow/cfg/visualize/DOTCFGVisualizer.java index 52818b491f3..bf5310772ac 100644 --- a/dataflow/src/main/java/org/checkerframework/dataflow/cfg/visualize/DOTCFGVisualizer.java +++ b/dataflow/src/main/java/org/checkerframework/dataflow/cfg/visualize/DOTCFGVisualizer.java @@ -187,9 +187,7 @@ public String visualizeBlockTransferInputAfter(Block bb, Analysis analy */ protected String dotOutputFileName(UnderlyingAST ast) { StringBuilder srcLoc = new StringBuilder(); - StringBuilder outFile = new StringBuilder(outDir); - - outFile.append("/"); + StringBuilder outFile = new StringBuilder(); if (ast.getKind() == UnderlyingAST.Kind.ARBITRARY_CODE) { CFGStatement cfgStatement = (CFGStatement) ast; @@ -264,8 +262,13 @@ protected String dotOutputFileName(UnderlyingAST ast) { } outFile.append(".dot"); + // make path safe for Linux + if (outFile.length() > 255) { + outFile.setLength(255); + } // make path safe for Windows - String outFileName = outFile.toString().replace("<", "_").replace(">", ""); + String outFileBaseName = outFile.toString().replace("<", "_").replace(">", ""); + String outFileName = outDir + "/" + outFileBaseName; generated.put(srcLoc.toString(), outFileName);