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:
Zeex 2018-09-07 23:51:33 +06:00 committed by GitHub
commit 26e3fd56e9
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -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);