Skip to content

Commit e7a2e43

Browse files
danmarfirewave
andauthored
Fix #13401 (cppcheck-addon-ctu-file-list filename should be unique for each process) (danmar#7082)
Co-authored-by: Oliver Stöneberg <[email protected]>
1 parent fe98775 commit e7a2e43

File tree

1 file changed

+6
-6
lines changed

1 file changed

+6
-6
lines changed

lib/cppcheck.cpp

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1446,13 +1446,13 @@ void CppCheck::executeAddons(const std::vector<std::string>& files, const std::s
14461446
if (mSettings.addons.empty() || files.empty())
14471447
return;
14481448

1449-
FilesDeleter filesDeleter;
1449+
const bool isCtuInfo = endsWith(files[0], ".ctu-info");
14501450

1451+
FilesDeleter filesDeleter;
14511452
std::string fileList;
14521453

1453-
if (files.size() >= 2 || endsWith(files[0], ".ctu-info")) {
1454-
// TODO: can this conflict when using -j?
1455-
fileList = Path::getPathFromFilename(files[0]) + FILELIST;
1454+
if (files.size() >= 2) {
1455+
fileList = Path::getPathFromFilename(files[0]) + FILELIST + ("-" + std::to_string(mSettings.pid)) + ".txt";
14561456
std::ofstream fout(fileList);
14571457
filesDeleter.addFile(fileList);
14581458
// TODO: check if file could be created
@@ -1466,7 +1466,7 @@ void CppCheck::executeAddons(const std::vector<std::string>& files, const std::s
14661466
std::string ctuInfo;
14671467

14681468
for (const AddonInfo &addonInfo : mSettings.addonInfos) {
1469-
if (addonInfo.name != "misra" && !addonInfo.ctu && endsWith(files.back(), ".ctu-info"))
1469+
if (isCtuInfo && addonInfo.name != "misra" && !addonInfo.ctu)
14701470
continue;
14711471

14721472
const std::vector<picojson::value> results =
@@ -1532,7 +1532,7 @@ void CppCheck::executeAddons(const std::vector<std::string>& files, const std::s
15321532
}
15331533
}
15341534

1535-
if (!mSettings.buildDir.empty() && fileList.empty()) {
1535+
if (!mSettings.buildDir.empty() && !isCtuInfo) {
15361536
const std::string& ctuInfoFile = getCtuInfoFileName(files[0]);
15371537
std::ofstream fout(ctuInfoFile);
15381538
fout << ctuInfo;

0 commit comments

Comments
 (0)