Core: Fix patch autoloading leaking the file handle

This commit is contained in:
Vicki Pfau 2024-10-08 04:39:53 -07:00
parent eaf45b9ab8
commit 4ef98c7ddf
2 changed files with 17 additions and 3 deletions

View File

@ -24,6 +24,7 @@ Emulation fixes:
- GBA Video: Improve emulation of window start/end conditions (fixes mgba.io/i/1945) - GBA Video: Improve emulation of window start/end conditions (fixes mgba.io/i/1945)
Other fixes: Other fixes:
- Core: Fix inconsistencies with setting game-specific overrides (fixes mgba.io/i/2963) - Core: Fix inconsistencies with setting game-specific overrides (fixes mgba.io/i/2963)
- Core: Fix patch autoloading leaking the file handle
- Debugger: Fix writing to specific segment in command-line debugger - Debugger: Fix writing to specific segment in command-line debugger
- GB: Fix uninitialized save data when loading undersized temporary saves - GB: Fix uninitialized save data when loading undersized temporary saves
- GB, GBA Core: Fix memory leak if reloading debug symbols - GB, GBA Core: Fix memory leak if reloading debug symbols

View File

@ -239,9 +239,22 @@ bool mCoreAutoloadPatch(struct mCore* core) {
if (!core->dirs.patch) { if (!core->dirs.patch) {
return false; return false;
} }
return core->loadPatch(core, mDirectorySetOpenSuffix(&core->dirs, core->dirs.patch, ".ups", O_RDONLY)) || struct VFile* vf = NULL;
core->loadPatch(core, mDirectorySetOpenSuffix(&core->dirs, core->dirs.patch, ".ips", O_RDONLY)) || if (!vf) {
core->loadPatch(core, mDirectorySetOpenSuffix(&core->dirs, core->dirs.patch, ".bps", O_RDONLY)); vf = mDirectorySetOpenSuffix(&core->dirs, core->dirs.patch, ".bps", O_RDONLY);
}
if (!vf) {
vf = mDirectorySetOpenSuffix(&core->dirs, core->dirs.patch, ".ups", O_RDONLY);
}
if (!vf) {
vf = mDirectorySetOpenSuffix(&core->dirs, core->dirs.patch, ".ips", O_RDONLY);
}
if (!vf) {
return false;
}
bool result = core->loadPatch(core, vf);
vf->close(vf);
return result;
} }
bool mCoreAutoloadCheats(struct mCore* core) { bool mCoreAutoloadCheats(struct mCore* core) {