From db16620861ed9d9f1104bde2556d80be9e87a911 Mon Sep 17 00:00:00 2001 From: Vicki Pfau Date: Tue, 14 Mar 2017 00:44:06 -0700 Subject: [PATCH] DS Video: Fix crash in extmode 1.x with memory unmapped --- src/ds/renderers/software.c | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/src/ds/renderers/software.c b/src/ds/renderers/software.c index dfefc9b50..804c30fff 100644 --- a/src/ds/renderers/software.c +++ b/src/ds/renderers/software.c @@ -752,7 +752,11 @@ void DSVideoSoftwareRendererDrawBackgroundExt1(struct GBAVideoSoftwareRenderer* if (!mosaicWait) { uint32_t address = (localX >> 8) + (localY >> 8) * width; - color = ((uint8_t*)renderer->d.vramBG[address >> 17])[address]; + uint8_t* vram = (uint8_t*) renderer->d.vramBG[address >> 17]; + if (UNLIKELY(!vram)) { + continue; + } + color = vram[address]; mosaicWait = mosaicH; } else { --mosaicWait; @@ -804,7 +808,11 @@ void DSVideoSoftwareRendererDrawBackgroundExt2(struct GBAVideoSoftwareRenderer* if (!mosaicWait) { uint32_t address = ((localX >> 8) + (localY >> 8) * width) << 1; - LOAD_16(color, address & 0x1FFFE, renderer->d.vramBG[address >> 17]); + uint16_t* vram = renderer->d.vramBG[address >> 17]; + if (UNLIKELY(!vram)) { + continue; + } + LOAD_16(color, address & 0x1FFFE, vram); #ifndef COLOR_16_BIT unsigned color32; color32 = 0;