]> git.unchartedbackwaters.co.uk Git - francis/winuae.git/commitdiff
Zero all temp variables to prevent possible warm reset crashes.
authorToni Wilen <twilen@winuae.net>
Fri, 19 Feb 2016 19:07:17 +0000 (21:07 +0200)
committerToni Wilen <twilen@winuae.net>
Fri, 19 Feb 2016 19:07:17 +0000 (21:07 +0200)
autoconf.cpp
include/autoconf.h

index ed09b6f7275aa986747dd09a227ea17a292caedb..66f174ae4ff0971c4d7db595a1285f1ab985ea32 100644 (file)
@@ -218,8 +218,13 @@ static void REGPARAM2 rtarea_lput (uaecptr addr, uae_u32 value)
 
 void rtarea_reset(void)
 {
-       memset(rtarea_bank.baseaddr + RTAREA_TRAP_DATA, 0, RTAREA_TRAP_DATA_SLOT_SIZE * (RTAREA_TRAP_DATA_NUM + RTAREA_TRAP_DATA_SEND_NUM));
-       memset(rtarea_bank.baseaddr + RTAREA_TRAP_STATUS, 0, RTAREA_TRAP_STATUS_SIZE * (RTAREA_TRAP_DATA_NUM + RTAREA_TRAP_DATA_SEND_NUM));
+       uae_u8 *p = rtarea_bank.baseaddr;
+       if (p) {
+               memset(p + RTAREA_TRAP_DATA, 0, RTAREA_TRAP_DATA_SLOT_SIZE * (RTAREA_TRAP_DATA_NUM + RTAREA_TRAP_DATA_SEND_NUM));
+               memset(p + RTAREA_TRAP_STATUS, 0, RTAREA_TRAP_STATUS_SIZE * (RTAREA_TRAP_DATA_NUM + RTAREA_TRAP_DATA_SEND_NUM));
+               memset(p + RTAREA_HEARTBEAT, 0, 0x10000 - RTAREA_HEARTBEAT);
+               memset(p + RTAREA_VARIABLES, 0, RTAREA_VARIABLES_SIZE);
+       }
        trap_reset();
 }
 
index 5129337f5d1b3592c0a8b8d00212d31f4ff6f83e..3fc10fc8539544643ac5b09b5b1283ba47c4fd67 100644 (file)
@@ -42,6 +42,8 @@
 #define RTAREA_TRAP_STATUS_SIZE 8
 #define RTAREA_TRAP_STATUS_SECOND 4
 
+#define RTAREA_VARIABLES 0x3F00
+#define RTAREA_VARIABLES_SIZE 0x100
 #define RTAREA_SYSBASE 0x3FFC
 #define RTAREA_GFXBASE 0x3FF8
 #define RTAREA_INTBASE 0x3FF4