From 27cf39dd54a229a15ec1682d8d86f60b94fdfea2 Mon Sep 17 00:00:00 2001
From: Hanicef <gustaf@hanicef.me>
Date: Fri, 9 Feb 2024 19:19:20 +0100
Subject: [PATCH] Prevent recursion into quit functions

---
 src/dedicated/i_system.c | 6 ++++++
 1 file changed, 6 insertions(+)

diff --git a/src/dedicated/i_system.c b/src/dedicated/i_system.c
index 94937504d..2afde6ac7 100644
--- a/src/dedicated/i_system.c
+++ b/src/dedicated/i_system.c
@@ -220,6 +220,8 @@ static boolean framebuffer = false;
 static size_t num_exit_funcs;
 static void (*exit_funcs[MAX_EXIT_FUNCS])(void);
 
+static boolean is_quitting = false;
+
 #ifdef __linux__
 #define MEMINFO_FILE "/proc/meminfo"
 #define MEMTOTAL "MemTotal:"
@@ -457,6 +459,10 @@ ticcmd_t *I_BaseTiccmd2(void)
 
 FUNCNORETURN static void I_QuitStatus(int status)
 {
+	if (is_quitting)
+		abort();
+
+	is_quitting = true;
 	M_SaveConfig(NULL); //save game config, cvars..
 	D_SaveBan(); // save the ban list
 	G_SaveGameData(clientGamedata); // Tails 12-08-2002
-- 
GitLab