mirror of
https://github.com/Shpoike/Quakespasm.git
synced 2024-11-10 07:21:58 +00:00
COM_LoadMallocFile_TextMode_OSPath: do not leak open file
This commit is contained in:
parent
4df8bb389a
commit
ea4320d675
1 changed files with 12 additions and 4 deletions
|
@ -1875,7 +1875,7 @@ byte *COM_LoadMallocFile_TextMode_OSPath (const char *path, long *len_out)
|
|||
FILE *f;
|
||||
byte *data;
|
||||
long len, actuallen;
|
||||
|
||||
|
||||
// ericw -- this is used by Host_Loadgame_f. Translate CRLF to LF on load games,
|
||||
// othewise multiline messages have a garbage character at the end of each line.
|
||||
// TODO: could handle in a way that allows loading CRLF savegames on mac/linux
|
||||
|
@ -1883,26 +1883,34 @@ byte *COM_LoadMallocFile_TextMode_OSPath (const char *path, long *len_out)
|
|||
f = fopen (path, "rt");
|
||||
if (f == NULL)
|
||||
return NULL;
|
||||
|
||||
|
||||
len = COM_filelength (f);
|
||||
if (len < 0)
|
||||
{
|
||||
fclose (f);
|
||||
return NULL;
|
||||
|
||||
}
|
||||
|
||||
data = (byte *) malloc (len + 1);
|
||||
if (data == NULL)
|
||||
{
|
||||
fclose (f);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
// (actuallen < len) if CRLF to LF translation was performed
|
||||
actuallen = fread (data, 1, len, f);
|
||||
if (ferror(f))
|
||||
{
|
||||
fclose (f);
|
||||
free (data);
|
||||
return NULL;
|
||||
}
|
||||
data[actuallen] = '\0';
|
||||
|
||||
|
||||
if (len_out != NULL)
|
||||
*len_out = actuallen;
|
||||
fclose (f);
|
||||
return data;
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in a new issue