From f63230ce40cce6bec6445a3585929d411f59e365 Mon Sep 17 00:00:00 2001 From: TC1995 Date: Sat, 24 Feb 2018 22:00:45 +0100 Subject: [PATCH] Fixed pointer bug that originally caused win95c to crash under certain circumstances. --- src/video/vid_cl54xx.c | 30 +++++++++++++++--------------- 1 file changed, 15 insertions(+), 15 deletions(-) diff --git a/src/video/vid_cl54xx.c b/src/video/vid_cl54xx.c index e825c5e78..d87594a15 100644 --- a/src/video/vid_cl54xx.c +++ b/src/video/vid_cl54xx.c @@ -9,7 +9,7 @@ * Emulation of select Cirrus Logic cards (currently * CL-GD 5428, 5429, 5430 and 5434 are supported). * - * Version: @(#)vid_cl_54xx.c 1.0.2 2018/02/23 + * Version: @(#)vid_cl_54xx.c 1.0.3 2018/02/24 * * Authors: Sarah Walker, * Barry Rodewald, @@ -879,9 +879,9 @@ gd54xx_write_linear(uint32_t addr, uint8_t val, gd54xx_t *gd54xx) addr <<= 2; addr &= svga->decode_mask; if (addr >= svga->vram_max) - return; + return; addr &= svga->vram_mask; - svga->changedvram[addr >> 12]=changeframecount; + svga->changedvram[addr >> 12]=changeframecount; switch (svga->writemode) { case 4: @@ -1099,16 +1099,16 @@ gd54xx_writew_linear(uint32_t addr, uint16_t val, void *p) gd54xx_t *gd54xx = (gd54xx_t *)svga->p; if (gd54xx->blt.sys_tx) { - gd54xx_writeb_linear(addr, val, p); - gd54xx_writeb_linear(addr+1, val >> 8, p); + gd54xx_writeb_linear(addr, val, svga); + gd54xx_writeb_linear(addr+1, val >> 8, svga); return; } if (svga->writemode < 4) svga_writew_linear(addr, val, svga); else { - gd54xx_write_linear(addr, val & 0xff, p); - gd54xx_write_linear(addr+1, val >> 8, p); + gd54xx_write_linear(addr, val & 0xff, gd54xx); + gd54xx_write_linear(addr+1, val >> 8, gd54xx); } } @@ -1120,20 +1120,20 @@ gd54xx_writel_linear(uint32_t addr, uint32_t val, void *p) gd54xx_t *gd54xx = (gd54xx_t *)svga->p; if (gd54xx->blt.sys_tx) { - gd54xx_writeb_linear(addr, val, p); - gd54xx_writeb_linear(addr+1, val >> 8, p); - gd54xx_writeb_linear(addr+2, val >> 16, p); - gd54xx_writeb_linear(addr+3, val >> 24, p); + gd54xx_writeb_linear(addr, val, svga); + gd54xx_writeb_linear(addr+1, val >> 8, svga); + gd54xx_writeb_linear(addr+2, val >> 16, svga); + gd54xx_writeb_linear(addr+3, val >> 24, svga); return; } if (svga->writemode < 4) svga_writel_linear(addr, val, svga); else { - gd54xx_write_linear(addr, val & 0xff, p); - gd54xx_write_linear(addr+1, val >> 8, p); - gd54xx_write_linear(addr+2, val >> 16, p); - gd54xx_write_linear(addr+3, val >> 24, p); + gd54xx_write_linear(addr, val & 0xff, gd54xx); + gd54xx_write_linear(addr+1, val >> 8, gd54xx); + gd54xx_write_linear(addr+2, val >> 16, gd54xx); + gd54xx_write_linear(addr+3, val >> 24, gd54xx); } }