GBA: Make sure unloading only frees if needed and always zeroes variable

This commit is contained in:
Jeffrey Pfau 2015-06-22 01:32:49 -07:00
parent 051af279c9
commit 86a36853ed

View File

@ -97,14 +97,13 @@ static void GBAInit(struct ARMCore* cpu, struct ARMComponent* component) {
} }
void GBAUnloadROM(struct GBA* gba) { void GBAUnloadROM(struct GBA* gba) {
if (gba->pristineRom == gba->memory.rom) { if (gba->memory.rom && gba->pristineRom != gba->memory.rom) {
gba->memory.rom = 0;
} else {
if (gba->yankedRomSize) { if (gba->yankedRomSize) {
gba->yankedRomSize = 0; gba->yankedRomSize = 0;
} }
mappedMemoryFree(gba->memory.rom, SIZE_CART0); mappedMemoryFree(gba->memory.rom, SIZE_CART0);
} }
gba->memory.rom = 0;
if (gba->romVf) { if (gba->romVf) {
gba->romVf->unmap(gba->romVf, gba->pristineRom, gba->pristineRomSize); gba->romVf->unmap(gba->romVf, gba->pristineRom, gba->pristineRomSize);