From df3f2796f7dca510480755b3952f2033dc1d2097 Mon Sep 17 00:00:00 2001 From: Jeffrey Pfau Date: Tue, 9 Dec 2014 15:19:51 -0800 Subject: [PATCH] GBA: Error check to make sure ROM and BIOS mapping succeed --- src/gba/gba.c | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/src/gba/gba.c b/src/gba/gba.c index 3eebc051d..78ffe1c76 100644 --- a/src/gba/gba.c +++ b/src/gba/gba.c @@ -425,6 +425,10 @@ void GBALoadROM(struct GBA* gba, struct VFile* vf, struct VFile* sav, const char gba->pristineRomSize = vf->seek(vf, 0, SEEK_END); vf->seek(vf, 0, SEEK_SET); gba->pristineRom = vf->map(vf, SIZE_CART0, MAP_READ); + if (!gba->pristineRom) { + GBALog(gba, GBA_LOG_WARN, "Couldn't map ROM"); + return; + } gba->memory.rom = gba->pristineRom; gba->activeFile = fname; gba->memory.romSize = gba->pristineRomSize; @@ -437,7 +441,12 @@ void GBALoadROM(struct GBA* gba, struct VFile* vf, struct VFile* sav, const char void GBALoadBIOS(struct GBA* gba, struct VFile* vf) { gba->biosVf = vf; - gba->memory.bios = vf->map(vf, SIZE_BIOS, MAP_READ); + uint32_t* bios = vf->map(vf, SIZE_BIOS, MAP_READ); + if (!bios) { + GBALog(gba, GBA_LOG_WARN, "Couldn't map BIOS"); + return; + } + gba->memory.bios = bios; gba->memory.fullBios = 1; uint32_t checksum = GBAChecksum(gba->memory.bios, SIZE_BIOS); GBALog(gba, GBA_LOG_DEBUG, "BIOS Checksum: 0x%X", checksum);