diff --git a/CHANGES b/CHANGES index 80d56aff4..ae6e3c64c 100644 --- a/CHANGES +++ b/CHANGES @@ -17,6 +17,7 @@ Bugfixes: - Qt: Initialize m_useBios - GBA Serialize: Fix memory corruption bug in GBAExtdataSerialize - GBA Serialize: Fix loading savegames from savestates + - All: Fix several file handle leaks Misc: - GBA: Slightly optimize GBAProcessEvents - Qt: Add preset for DualShock 4 diff --git a/src/gb/gb.c b/src/gb/gb.c index d366b1516..13145de7e 100644 --- a/src/gb/gb.c +++ b/src/gb/gb.c @@ -120,6 +120,7 @@ void GBUnloadROM(struct GB* gb) { #ifndef _3DS gb->romVf->unmap(gb->romVf, gb->pristineRom, gb->pristineRomSize); #endif + gb->romVf->close(gb->romVf); gb->pristineRom = 0; gb->romVf = 0; } diff --git a/src/gba/gba.c b/src/gba/gba.c index 52fbb0b60..2a78db399 100644 --- a/src/gba/gba.c +++ b/src/gba/gba.c @@ -125,6 +125,7 @@ void GBAUnloadROM(struct GBA* gba) { #ifndef _3DS gba->romVf->unmap(gba->romVf, gba->pristineRom, gba->pristineRomSize); #endif + gba->romVf->close(gba->romVf); gba->pristineRom = 0; gba->romVf = 0; } diff --git a/src/platform/opengl/gles2.c b/src/platform/opengl/gles2.c index 76ba43b04..ec8f2cf5a 100644 --- a/src/platform/opengl/gles2.c +++ b/src/platform/opengl/gles2.c @@ -880,6 +880,7 @@ bool mGLES2ShaderLoad(struct VideoShader* shader, struct VDir* dir) { } } } + manifest->close(manifest); ConfigurationDeinit(&description); return success; } diff --git a/src/util/configuration.c b/src/util/configuration.c index 48aa2d3fe..adae7f300 100644 --- a/src/util/configuration.c +++ b/src/util/configuration.c @@ -151,7 +151,9 @@ bool ConfigurationRead(struct Configuration* configuration, const char* path) { if (!vf) { return false; } - return ConfigurationReadVFile(configuration, vf); + bool res = ConfigurationReadVFile(configuration, vf); + vf->close(vf); + return res; } bool ConfigurationReadVFile(struct Configuration* configuration, struct VFile* vf) {