fixed lock-up when auto-testing tape which causes loop in game engine
authorHolger Schemel <holger.schemel@virtion.de>
Thu, 28 Oct 2021 14:39:54 +0000 (16:39 +0200)
committerHolger Schemel <holger.schemel@virtion.de>
Thu, 28 Oct 2021 15:00:13 +0000 (17:00 +0200)
It is possible to create endless loops in the game engine by using
recursive custom element properties. These endless loops are detected
and the user is notified by a request dialog about this problem to be
able to stop the running game. When auto-testing tapes on the command
line, answering a graphical request dialog is not possible, which
causes the program to hang.

This fix stops replaying the tape in this case (and skips the request
dialog), so auto-testing tapes can continue (with an unsolvable tape).

src/game.c

index 89e9e7fac1c739df6326eb4276d28913d6794795..abc56d238a167278eb7769778ba0edc4e5269c40 100644 (file)
@@ -11713,7 +11713,7 @@ static void GameActionsExt(void)
     Warn("element '%s' caused endless loop in game engine",
         EL_NAME(recursion_loop_element));
 
-    RequestQuitGameExt(FALSE, level_editor_test_game, message);
+    RequestQuitGameExt(program.headless, level_editor_test_game, message);
 
     recursion_loop_detected = FALSE;   // if game should be continued