From 49a241a272afef3f03c2897af29feff6bd8badbf Mon Sep 17 00:00:00 2001 From: lordhavoc Date: Fri, 22 Sep 2000 04:47:32 +0000 Subject: [PATCH] raised pack file count back to 16384 and fixed stack overflow git-svn-id: svn://svn.icculus.org/twilight/trunk/darkplaces@45 d7cf8633-e32d-0410-b094-e92efae38249 --- common.c | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/common.c b/common.c index 329c7add..7a750b68 100644 --- a/common.c +++ b/common.c @@ -1262,8 +1262,8 @@ typedef struct int dirlen; } dpackheader_t; -// LordHavoc: was 2048 -#define MAX_FILES_IN_PACK 4096 +// LordHavoc: was 2048, increased to 16384 and changed info[MAX_PACK_FILES] to a temporary malloc to avoid stack overflows +#define MAX_FILES_IN_PACK 16384 char com_cachedir[MAX_OSPATH]; char com_gamedir[MAX_OSPATH]; @@ -1661,7 +1661,8 @@ pack_t *COM_LoadPackFile (char *packfile) int numpackfiles; pack_t *pack; int packhandle; - dpackfile_t info[MAX_FILES_IN_PACK]; + // LordHavoc: changed from stack array to temporary malloc, allowing huge pack directories + dpackfile_t *info; unsigned short crc; if (Sys_FileOpenRead (packfile, &packhandle) == -1) @@ -1686,6 +1687,7 @@ pack_t *COM_LoadPackFile (char *packfile) newfiles = Hunk_AllocName (numpackfiles * sizeof(packfile_t), "packfile"); + info = malloc(sizeof(*info)*MAX_FILES_IN_PACK); Sys_FileSeek (packhandle, header.dirofs); Sys_FileRead (packhandle, (void *)info, header.dirlen); @@ -1705,6 +1707,7 @@ pack_t *COM_LoadPackFile (char *packfile) newfiles[i].filepos = LittleLong(info[i].filepos); newfiles[i].filelen = LittleLong(info[i].filelen); } + free(info); pack = Hunk_Alloc (sizeof (pack_t)); strcpy (pack->filename, packfile); -- 2.39.2