From fd0480c7e50b1847e1ec2847a1067daaf5c5ec44 Mon Sep 17 00:00:00 2001 From: pagefault <> Date: Fri, 31 Oct 2003 17:39:20 +0000 Subject: [PATCH] Safer memory allocation --- zsnes/src/ui.asm | 6 +++++- zsnes/src/uic.c | 15 ++++++++++++++- 2 files changed, 19 insertions(+), 2 deletions(-) diff --git a/zsnes/src/ui.asm b/zsnes/src/ui.asm index 4a17e0dd..24d771fc 100644 --- a/zsnes/src/ui.asm +++ b/zsnes/src/ui.asm @@ -664,7 +664,11 @@ NEWSYM allocptr ; cmp byte[OSPort],3 ; jne near .nostate %ifndef __MSDOS__ - AllocmemFail 4096*128*16+4096+65536*16,StateBackup,outofmemory +EXTSYM allocblah +pushad +call allocblah +popad +; AllocmemFail 4096*128*16+4096+65536*16,StateBackup,outofmemory mov eax,[StateBackup] add eax,4096*128*16 mov [BitConv32Ptr],eax diff --git a/zsnes/src/uic.c b/zsnes/src/uic.c index 02bbfb83..a280a270 100644 --- a/zsnes/src/uic.c +++ b/zsnes/src/uic.c @@ -24,9 +24,22 @@ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. #define true 1 #define false 0 +extern void outofmemory(); extern int *spc7110romptr; +extern int *StateBackup; +extern int *spcBuffera; + +int doMemAlloc(int *ptr, int size) +{ + int result = 0; + + ptr = malloc(size); + if (ptr) result = 1; + + return result; +} void allocspc7110() { - spc7110romptr = malloc(8192*1024+4096); + if (!doMemAlloc(spc7110romptr, 8192*1024+4096)) outofmemory(); }