From 72ee91702cf7cec3a2076cb73e19835104dcc41d Mon Sep 17 00:00:00 2001
From: James R <justsomejames2@gmail.com>
Date: Thu, 12 Dec 2019 21:21:25 -0800
Subject: [PATCH] Kill child when wait fails, so I_Error exits both

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

diff --git a/src/sdl/i_system.c b/src/sdl/i_system.c
index c3b469bcac..7d14052685 100644
--- a/src/sdl/i_system.c
+++ b/src/sdl/i_system.c
@@ -2169,9 +2169,13 @@ void I_Sleep(void)
 #ifdef NEWSIGNALHANDLER
 static void I_Fork(void)
 {
+	int child;
 	int status;
 	int signum;
-	switch (fork())
+
+	child = fork();
+
+	switch (child)
 	{
 		case -1:
 			I_Error(
@@ -2184,6 +2188,7 @@ static void I_Fork(void)
 		default:
 			if (wait(&status) == -1)
 			{
+				kill(child, SIGKILL);
 				I_Error(
 						"Error setting up signal reporting: fork(): %s\n",
 						strerror(errno)
-- 
GitLab