GB: Fix null unmap when resizing SRAM

This commit is contained in:
Jeffrey Pfau 2016-09-08 19:02:39 -07:00
parent 74df1d1531
commit 4e73cd32f1
1 changed files with 9 additions and 3 deletions

View File

@ -123,7 +123,9 @@ void GBResizeSram(struct GB* gb, size_t size) {
// Copy over appended data, e.g. RTC data
memcpy(extdataBuffer, &gb->memory.sram[gb->sramSize - (vf->size(vf) & 0xFF)], vf->size(vf) & 0xFF);
}
vf->unmap(vf, gb->memory.sram, gb->sramSize);
if (gb->memory.sram) {
vf->unmap(vf, gb->memory.sram, gb->sramSize);
}
vf->truncate(vf, size);
gb->memory.sram = vf->map(vf, size, MAP_WRITE);
memset(&gb->memory.sram[gb->sramSize], 0xFF, size - gb->sramSize);
@ -131,11 +133,15 @@ void GBResizeSram(struct GB* gb, size_t size) {
memcpy(&gb->memory.sram[gb->sramSize - (size & 0xFF)], extdataBuffer, size & 0xFF);
}
} else {
vf->unmap(vf, gb->memory.sram, gb->sramSize);
if (gb->memory.sram) {
vf->unmap(vf, gb->memory.sram, gb->sramSize);
}
gb->memory.sram = vf->map(vf, size, MAP_WRITE);
}
} else {
vf->unmap(vf, gb->memory.sram, gb->sramSize);
if (gb->memory.sram) {
vf->unmap(vf, gb->memory.sram, gb->sramSize);
}
gb->memory.sram = vf->map(vf, size, MAP_READ);
}
} else {