[rmodels] Fix leaks in LoadIQM() and LoadModelAnimationsIQM() (#4649)

Add calls to UnloadFileData() before return in cases of invalid IQM file.
This commit is contained in:
Peter Zmanovsky 2024-12-30 01:06:40 +05:00 committed by GitHub
parent f355d6f1db
commit d1315e8a04
No known key found for this signature in database
GPG key ID: B5690EEEBB952194

View file

@ -4570,12 +4570,14 @@ static Model LoadIQM(const char *fileName)
if (memcmp(iqmHeader->magic, IQM_MAGIC, sizeof(IQM_MAGIC)) != 0) if (memcmp(iqmHeader->magic, IQM_MAGIC, sizeof(IQM_MAGIC)) != 0)
{ {
TRACELOG(LOG_WARNING, "MODEL: [%s] IQM file is not a valid model", fileName); TRACELOG(LOG_WARNING, "MODEL: [%s] IQM file is not a valid model", fileName);
UnloadFileData(fileData);
return model; return model;
} }
if (iqmHeader->version != IQM_VERSION) if (iqmHeader->version != IQM_VERSION)
{ {
TRACELOG(LOG_WARNING, "MODEL: [%s] IQM file version not supported (%i)", fileName, iqmHeader->version); TRACELOG(LOG_WARNING, "MODEL: [%s] IQM file version not supported (%i)", fileName, iqmHeader->version);
UnloadFileData(fileData);
return model; return model;
} }
@ -4891,12 +4893,14 @@ static ModelAnimation *LoadModelAnimationsIQM(const char *fileName, int *animCou
if (memcmp(iqmHeader->magic, IQM_MAGIC, sizeof(IQM_MAGIC)) != 0) if (memcmp(iqmHeader->magic, IQM_MAGIC, sizeof(IQM_MAGIC)) != 0)
{ {
TRACELOG(LOG_WARNING, "MODEL: [%s] IQM file is not a valid model", fileName); TRACELOG(LOG_WARNING, "MODEL: [%s] IQM file is not a valid model", fileName);
UnloadFileData(fileData);
return NULL; return NULL;
} }
if (iqmHeader->version != IQM_VERSION) if (iqmHeader->version != IQM_VERSION)
{ {
TRACELOG(LOG_WARNING, "MODEL: [%s] IQM file version not supported (%i)", fileName, iqmHeader->version); TRACELOG(LOG_WARNING, "MODEL: [%s] IQM file version not supported (%i)", fileName, iqmHeader->version);
UnloadFileData(fileData);
return NULL; return NULL;
} }