Merge pull request #363 from Daniel-Cortez/fix-amxaux
amxaux.c: Don't forget to close the program file before returning
This commit is contained in:
commit
26e3fd56e9
@ -30,13 +30,15 @@
|
||||
size_t AMXAPI aux_ProgramSize(char *filename)
|
||||
{
|
||||
FILE *fp;
|
||||
size_t size;
|
||||
AMX_HEADER hdr;
|
||||
|
||||
if ((fp=fopen(filename,"rb")) == NULL)
|
||||
return 0;
|
||||
if (fread(&hdr, sizeof hdr, 1, fp) < 1)
|
||||
return 0;
|
||||
size = fread(&hdr, sizeof hdr, 1, fp);
|
||||
fclose(fp);
|
||||
if (size < 1)
|
||||
return 0;
|
||||
|
||||
amx_Align16(&hdr.magic);
|
||||
amx_Align32((uint32_t *)&hdr.stp);
|
||||
@ -46,14 +48,18 @@ size_t AMXAPI aux_ProgramSize(char *filename)
|
||||
int AMXAPI aux_LoadProgram(AMX *amx, char *filename, void *memblock)
|
||||
{
|
||||
FILE *fp;
|
||||
size_t size;
|
||||
AMX_HEADER hdr;
|
||||
int result, didalloc;
|
||||
|
||||
/* open the file, read and check the header */
|
||||
if ((fp = fopen(filename, "rb")) == NULL)
|
||||
return AMX_ERR_NOTFOUND;
|
||||
if (fread(&hdr, sizeof hdr, 1, fp) < 1)
|
||||
return AMX_ERR_INIT;
|
||||
size = fread(&hdr, sizeof hdr, 1, fp);
|
||||
if (size < 1) {
|
||||
fclose(fp);
|
||||
return AMX_ERR_FORMAT;
|
||||
} /* if */
|
||||
amx_Align16(&hdr.magic);
|
||||
amx_Align32((uint32_t *)&hdr.size);
|
||||
amx_Align32((uint32_t *)&hdr.stp);
|
||||
@ -75,9 +81,10 @@ int AMXAPI aux_LoadProgram(AMX *amx, char *filename, void *memblock)
|
||||
|
||||
/* read in the file */
|
||||
rewind(fp);
|
||||
if (fread(memblock, 1, (size_t)hdr.size, fp) < (size_t)hdr.size)
|
||||
return AMX_ERR_INIT;
|
||||
size = fread(memblock, 1, (size_t)hdr.size, fp);
|
||||
fclose(fp);
|
||||
if (size < (size_t)hdr.size)
|
||||
return AMX_ERR_FORMAT;
|
||||
|
||||
/* initialize the abstract machine */
|
||||
memset(amx, 0, sizeof *amx);
|
||||
|
Loading…
x
Reference in New Issue
Block a user