From 4e73cd32f1621d115bd22125d722113d635ee08d Mon Sep 17 00:00:00 2001 From: Jeffrey Pfau Date: Thu, 8 Sep 2016 19:02:39 -0700 Subject: [PATCH] GB: Fix null unmap when resizing SRAM --- src/gb/gb.c | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/src/gb/gb.c b/src/gb/gb.c index 96fef6762..940621d21 100644 --- a/src/gb/gb.c +++ b/src/gb/gb.c @@ -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 {