From 619250425e351f60e183b50f16df8f559c102582 Mon Sep 17 00:00:00 2001
From: LJ Sonic <lamr@free.fr>
Date: Mon, 29 Nov 2021 00:39:42 +0100
Subject: [PATCH] Fix fileneeded array not being reallocated correctly

---
 src/d_clisrv.c | 1 +
 src/d_netfil.c | 4 ++++
 2 files changed, 5 insertions(+)

diff --git a/src/d_clisrv.c b/src/d_clisrv.c
index c345d52908..36ced7f64e 100644
--- a/src/d_clisrv.c
+++ b/src/d_clisrv.c
@@ -2297,6 +2297,7 @@ static boolean CL_ServerConnectionTicker(const char *tmpsave, tic_t *oldtic, tic
 		case CL_LOADFILES:
 			if (CL_LoadServerFiles())
 			{
+				FreeFileNeeded();
 				*asksent = 0; //This ensure the first join ask is right away
 				firstconnectattempttime = I_GetTime();
 				cl_mode = CL_ASKJOIN;
diff --git a/src/d_netfil.c b/src/d_netfil.c
index 6e9130f143..5168fff9ad 100644
--- a/src/d_netfil.c
+++ b/src/d_netfil.c
@@ -189,6 +189,8 @@ void AllocFileNeeded(INT32 size)
 {
 	if (fileneeded == NULL)
 		fileneeded = Z_Calloc(sizeof(fileneeded_t) * size, PU_STATIC, NULL);
+	else
+		fileneeded = Z_Realloc(fileneeded, sizeof(fileneeded_t) * size, PU_STATIC, NULL);
 }
 
 void FreeFileNeeded(void)
@@ -235,6 +237,7 @@ void CL_PrepareDownloadSaveGame(const char *tmpsave)
 	lastfilenum = -1;
 #endif
 
+	FreeFileNeeded();
 	AllocFileNeeded(1);
 
 	fileneedednum = 1;
@@ -728,6 +731,7 @@ void CL_PrepareDownloadLuaFile(void)
 	netbuffer->packettype = PT_ASKLUAFILE;
 	HSendPacket(servernode, true, 0, 0);
 
+	FreeFileNeeded();
 	AllocFileNeeded(1);
 
 	fileneedednum = 1;
-- 
GitLab