Core: Fix patch autoloading leaking the file handle

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

View File

@ -8,6 +8,7 @@ Emulation fixes:
- GBA Serialize: Properly restore GPIO register state (fixes mgba.io/i/3294) - GBA Serialize: Properly restore GPIO register state (fixes mgba.io/i/3294)
- GBA SIO: Fix MULTI mode SIOCNT bit 7 writes on secondary GBAs (fixes mgba.io/i/3110) - GBA SIO: Fix MULTI mode SIOCNT bit 7 writes on secondary GBAs (fixes mgba.io/i/3110)
Other fixes: Other fixes:
- Core: Fix patch autoloading leaking the file handle
- 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
- GB Serialize: Prevent loading invalid states where LY >= 144 in modes other than 1 - GB Serialize: Prevent loading invalid states where LY >= 144 in modes other than 1

View File

@ -237,9 +237,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) {