From 120bea629ddf1bea2fae340f3422b8b6e477a709 Mon Sep 17 00:00:00 2001 From: Shauren Date: Sat, 6 Jul 2024 22:52:11 +0200 Subject: Core/Vmaps: Fixed use after free and deadlocks when loading a model file fails (cherry picked from commit d05dbaaecbd4bf7e1c0fd32d0fef34341b4067f6) --- src/tools/mmaps_generator/PathGenerator.cpp | 2 +- src/tools/vmap4_assembler/TileAssembler.cpp | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) (limited to 'src/tools') diff --git a/src/tools/mmaps_generator/PathGenerator.cpp b/src/tools/mmaps_generator/PathGenerator.cpp index 803c9e653b4..4b9620bff1f 100644 --- a/src/tools/mmaps_generator/PathGenerator.cpp +++ b/src/tools/mmaps_generator/PathGenerator.cpp @@ -79,7 +79,7 @@ bool checkDirectories(bool debugOutput, std::vector& dbcLocales) } dirFiles.clear(); - if (getDirContents(dirFiles, "vmaps", "*.vmtree") == LISTFILE_DIRECTORY_NOT_FOUND || dirFiles.empty()) + if (getDirContents(dirFiles, "vmaps/0000", "*.vmtree") == LISTFILE_DIRECTORY_NOT_FOUND || dirFiles.empty()) { printf("'vmaps' directory is empty or does not exist\n"); return false; diff --git a/src/tools/vmap4_assembler/TileAssembler.cpp b/src/tools/vmap4_assembler/TileAssembler.cpp index 162c1bad29e..2f96d3d4442 100644 --- a/src/tools/vmap4_assembler/TileAssembler.cpp +++ b/src/tools/vmap4_assembler/TileAssembler.cpp @@ -100,7 +100,6 @@ namespace VMAP threadPool.PostWork([this, file = directoryEntry.path(), &abortThreads, &workerIndexGen, &spawnedModelFilesByThread, &mapsToProcess] { thread_local std::size_t workerIndex = workerIndexGen++; - --mapsToProcess; auto dirf = OpenFile(file, "rb"); if (!dirf) @@ -127,6 +126,7 @@ namespace VMAP return abortThreads(); spawnedModelFilesByThread[workerIndex].merge(data.SpawnedModelFiles); + --mapsToProcess; }); } -- cgit v1.2.3