diff options
author | Shauren <shauren.trinity@gmail.com> | 2024-07-06 22:52:11 +0200 |
---|---|---|
committer | Ovahlord <dreadkiller@gmx.de> | 2024-07-06 22:59:34 +0200 |
commit | 120bea629ddf1bea2fae340f3422b8b6e477a709 (patch) | |
tree | 6740eb9b56a22c827803f29600331c5632c6e613 /src/tools | |
parent | 0fe73dc2b6527b7f0088ac310679d1c9e9c630ff (diff) |
Core/Vmaps: Fixed use after free and deadlocks when loading a model file fails
(cherry picked from commit d05dbaaecbd4bf7e1c0fd32d0fef34341b4067f6)
Diffstat (limited to 'src/tools')
-rw-r--r-- | src/tools/mmaps_generator/PathGenerator.cpp | 2 | ||||
-rw-r--r-- | src/tools/vmap4_assembler/TileAssembler.cpp | 2 |
2 files changed, 2 insertions, 2 deletions
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<std::string>& 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; }); } |