summaryrefslogtreecommitdiff
path: root/src/genworld_gui.cpp
diff options
context:
space:
mode:
authorPatric Stout <truebrain@openttd.org>2021-03-25 11:57:28 +0100
committerGitHub <noreply@github.com>2021-03-25 11:57:28 +0100
commit751434ea638dbb476b188de408eae6f036a35363 (patch)
tree3553a85b5f7feb03fafde442e99399f78b9e0350 /src/genworld_gui.cpp
parent0c4443667d04727ff7b0774a4f5bbb4fec233c4d (diff)
downloadopenttd-751434ea638dbb476b188de408eae6f036a35363.tar.xz
Fix: placing random trees in SE crashes the game (#8892)
This used to work by accident: originally the code checked if GenerateWorld was threaded. If not, it would abort the function. This worked for placing trees, because it was also returning false when it was not active. With the recent changes, that check got removed, and this crash started to happen. So now check if we have a modal window, which is a very solid indication we are generating the world.
Diffstat (limited to 'src/genworld_gui.cpp')
-rw-r--r--src/genworld_gui.cpp6
1 files changed, 6 insertions, 0 deletions
diff --git a/src/genworld_gui.cpp b/src/genworld_gui.cpp
index f26d43ac3..14abd4b75 100644
--- a/src/genworld_gui.cpp
+++ b/src/genworld_gui.cpp
@@ -1313,6 +1313,12 @@ static void _SetGeneratingWorldProgress(GenWorldProgress cls, uint progress, uin
static_assert(lengthof(percent_table) == GWP_CLASS_COUNT + 1);
assert(cls < GWP_CLASS_COUNT);
+ /* Check if we really are generating the world.
+ * For example, placing trees via the SE also calls this function, but
+ * shouldn't try to update the progress.
+ */
+ if (!HasModalProgress()) return;
+
if (IsGeneratingWorldAborted()) {
HandleGeneratingWorldAbortion();
return;