summaryrefslogtreecommitdiff
path: root/src/strife
diff options
context:
space:
mode:
Diffstat (limited to 'src/strife')
-rw-r--r--src/strife/d_main.c27
1 files changed, 16 insertions, 11 deletions
diff --git a/src/strife/d_main.c b/src/strife/d_main.c
index fdb6bbdc..b2eadd96 100644
--- a/src/strife/d_main.c
+++ b/src/strife/d_main.c
@@ -839,19 +839,24 @@ void D_IdentifyVersion(void)
if((p = M_CheckParm("-iwad")) && p < myargc - 1)
{
char *iwad = myargv[p + 1];
- size_t len = strlen(iwad) + 24;
- char *filename = malloc(len);
- char sepchar;
-
- // how the heck is Choco surviving without this routine?
- sepchar = M_GetFilePath(iwad, filename, len);
- filename[strlen(filename)] = sepchar;
- M_StringConcat(filename, "voices.wad", sizeof(filename));
-
- if(!M_FileExists(filename))
+ size_t len = strlen(iwad) + 1;
+ char *iwadpath = Z_Malloc(len, PU_STATIC, NULL);
+ char *voiceswad;
+
+ // extract base path of IWAD parameter
+ M_GetFilePath(iwad, iwadpath, len);
+
+ // concatenate with /voices.wad
+ voiceswad = M_SafeFilePath(iwadpath, "voices.wad");
+ Z_Free(iwadpath);
+
+ if(!M_FileExists(voiceswad))
+ {
disable_voices = 1;
+ Z_Free(voiceswad);
+ }
else
- name = filename; // STRIFE-FIXME: memory leak!!
+ name = voiceswad; // STRIFE-FIXME: memory leak!!
}
else
disable_voices = 1;