From 26b8be87c8fa95dae5e6881a27c6db844be4b580 Mon Sep 17 00:00:00 2001 From: Michael Ernst Date: Mon, 13 Nov 2023 08:23:05 -0800 Subject: [PATCH] Don't create filenames longer than 255 characters (#6299) --- .../dataflow/cfg/visualize/DOTCFGVisualizer.java | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) 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);