added wrapper around places that uses malloc to use FCEU_dmalloc, for debugging purpose if the need comes up

This commit is contained in:
qeed 2010-09-19 00:00:38 +00:00
parent 90695b00ac
commit 0d63ef203a
16 changed files with 144 additions and 99 deletions

View File

@ -30,8 +30,8 @@
#include "fceu.h" #include "fceu.h"
#include "file.h" #include "file.h"
#include "cart.h" #include "cart.h"
#include "memory.h"
#include "driver.h" #include "driver.h"
#include "utils/memory.h"
using namespace std; using namespace std;
@ -163,7 +163,7 @@ static void CheatMemErr(void)
static int AddCheatEntry(char *name, uint32 addr, uint8 val, int compare, int status, int type) static int AddCheatEntry(char *name, uint32 addr, uint8 val, int compare, int status, int type)
{ {
struct CHEATF *temp; struct CHEATF *temp;
if(!(temp=(struct CHEATF *)malloc(sizeof(struct CHEATF)))) if(!(temp=(struct CHEATF *)FCEU_dmalloc(sizeof(struct CHEATF))))
{ {
CheatMemErr(); CheatMemErr();
return(0); return(0);
@ -248,7 +248,8 @@ void FCEU_LoadGameCheats(FILE *override)
char *neo=&tbuf[4+2+2+1+1+1]; char *neo=&tbuf[4+2+2+1+1+1];
if(sscanf(tbuf,"%04x%*[:]%02x%*[:]%02x",&addr,&val,&compare)!=3) if(sscanf(tbuf,"%04x%*[:]%02x%*[:]%02x",&addr,&val,&compare)!=3)
continue; continue;
namebuf=(char *)malloc(strlen(neo)+1); if (!(namebuf=(char *)FCEU_dmalloc(strlen(neo)+1)))
return;
strcpy(namebuf,neo); strcpy(namebuf,neo);
} }
else else
@ -256,7 +257,8 @@ void FCEU_LoadGameCheats(FILE *override)
char *neo=&tbuf[4+2+1+1]; char *neo=&tbuf[4+2+1+1];
if(sscanf(tbuf,"%04x%*[:]%02x",&addr,&val)!=2) if(sscanf(tbuf,"%04x%*[:]%02x",&addr,&val)!=2)
continue; continue;
namebuf=(char *)malloc(strlen(neo)+1); if (!(namebuf=(char *)FCEU_dmalloc(strlen(neo)+1)))
return;
strcpy(namebuf,neo); strcpy(namebuf,neo);
} }
@ -364,7 +366,7 @@ int FCEUI_AddCheat(const char *name, uint32 addr, uint8 val, int compare, int ty
{ {
char *t; char *t;
if(!(t=(char *)malloc(strlen(name)+1))) if(!(t=(char *)FCEU_dmalloc(strlen(name)+1)))
{ {
CheatMemErr(); CheatMemErr();
return(0); return(0);
@ -660,7 +662,7 @@ static int InitCheatComp(void)
{ {
uint32 x; uint32 x;
CheatComp=(uint16*)malloc(65536*sizeof(uint16)); CheatComp=(uint16*)FCEU_dmalloc(65536*sizeof(uint16));
if(!CheatComp) if(!CheatComp)
{ {
CheatMemErr(); CheatMemErr();
@ -949,4 +951,4 @@ void UpdateFrozenList(void)
//FCEU_printf("Address %d: %d \n",x,FrozenAddresses[x]); //Debug //FCEU_printf("Address %d: %d \n",x,FrozenAddresses[x]); //Debug
} }
//FCEUI_DispMessage("FrozenCount: %d",0,FrozenAddressCount);//Debug //FCEUI_DispMessage("FrozenCount: %d",0,FrozenAddressCount);//Debug
} }

View File

@ -46,6 +46,8 @@
#include <ctype.h> #include <ctype.h>
#include "conddebug.h" #include "conddebug.h"
#include "types.h"
#include "utils/memory.h"
// Next non-whitespace character in string // Next non-whitespace character in string
char next; char next;
@ -93,7 +95,9 @@ Condition* InfixOperator(const char** str, Condition(*nextPart(const char**)), i
return 0; return 0;
} }
mid = (Condition*)malloc(sizeof(Condition)); mid = (Condition*)FCEU_dmalloc(sizeof(Condition));
if (!mid)
return NULL;
memset(mid, 0, sizeof(Condition)); memset(mid, 0, sizeof(Condition));
mid->lhs = t; mid->lhs = t;
@ -317,9 +321,13 @@ Condition* Primitive(const char** str, Condition* c)
/* Handle * and / operators */ /* Handle * and / operators */
Condition* Term(const char** str) Condition* Term(const char** str)
{ {
Condition* t = (Condition*)malloc(sizeof(Condition)); Condition* t;
Condition* t1; Condition* t1;
Condition* mid; Condition* mid;
t = (Condition*)FCEU_dmalloc(sizeof(Condition));
if (!t)
return NULL;
memset(t, 0, sizeof(Condition)); memset(t, 0, sizeof(Condition));
@ -335,7 +343,9 @@ Condition* Term(const char** str)
scan(str); scan(str);
t1 = (Condition*)malloc(sizeof(Condition)); if (!(t1 = (Condition*)FCEU_dmalloc(sizeof(Condition))))
return NULL;
memset(t1, 0, sizeof(Condition)); memset(t1, 0, sizeof(Condition));
if (!Primitive(str, t1)) if (!Primitive(str, t1))
@ -345,7 +355,9 @@ Condition* Term(const char** str)
return 0; return 0;
} }
mid = (Condition*)malloc(sizeof(Condition)); if (!(mid = (Condition*)FCEU_dmalloc(sizeof(Condition))))
return NULL;
memset(mid, 0, sizeof(Condition)); memset(mid, 0, sizeof(Condition));
mid->lhs = t; mid->lhs = t;

View File

@ -9,6 +9,7 @@
#include "version.h" #include "version.h"
#include "fceu.h" #include "fceu.h"
#include "driver.h" #include "driver.h"
#include "utils/memory.h"
static char *aboutString = 0; static char *aboutString = 0;
@ -43,7 +44,9 @@ FCEU TAS+ - Luke Gustafson\n\
const char *compilerString = FCEUD_GetCompilerString(); const char *compilerString = FCEUD_GetCompilerString();
//allocate the string and concatenate the template with the compiler string //allocate the string and concatenate the template with the compiler string
aboutString = (char*)malloc(strlen(aboutTemplate) + strlen(compilerString) + 1); if (!(aboutString = (char*)FCEU_dmalloc(strlen(aboutTemplate) + strlen(compilerString) + 1)))
sprintf(aboutString,"%s%s",aboutTemplate,compilerString); return NULL;
sprintf(aboutString,"%s%s",aboutTemplate,compilerString);
return aboutString; return aboutString;
} }

View File

@ -135,6 +135,8 @@ int checkCondition(const char* condition, int num)
{ {
watchpoint[num].cond = c; watchpoint[num].cond = c;
watchpoint[num].condText = (char*)malloc(strlen(condition) + 1); watchpoint[num].condText = (char*)malloc(strlen(condition) + 1);
if (!watchpoint[num].condText)
return 0;
strcpy(watchpoint[num].condText, condition); strcpy(watchpoint[num].condText, condition);
} }
else else

View File

@ -24,7 +24,7 @@
#include "hq3x.h" #include "hq3x.h"
#include "../../types.h" #include "../../types.h"
#include "../../utils/memory.h"
#include "nes_ntsc.h" #include "nes_ntsc.h"
nes_ntsc_t* nes_ntsc; nes_ntsc_t* nes_ntsc;
@ -108,12 +108,12 @@ int InitBlitToHigh(int b, uint32 rmask, uint32 gmask, uint32 bmask, int efx, int
} }
nes_ntsc = (nes_ntsc_t*) malloc( sizeof (nes_ntsc_t) ); nes_ntsc = (nes_ntsc_t*) FCEU_dmalloc( sizeof (nes_ntsc_t) );
if ( nes_ntsc ) { if ( nes_ntsc ) {
nes_ntsc_init( nes_ntsc, &ntsc_setup, b, 2 ); nes_ntsc_init( nes_ntsc, &ntsc_setup, b, 2 );
ntscblit = (uint8*)malloc(256*257*b*multi); //Need to add multiplier for larger sizes ntscblit = (uint8*)FCEU_dmalloc(256*257*b*multi); //Need to add multiplier for larger sizes
} }
} // -Video Modes Tag- } // -Video Modes Tag-
@ -121,7 +121,7 @@ int InitBlitToHigh(int b, uint32 rmask, uint32 gmask, uint32 bmask, int efx, int
{ {
int multi = ((specfilt == 2) ? 2 * 2 : 3 * 3); int multi = ((specfilt == 2) ? 2 * 2 : 3 * 3);
specbuf8bpp = (uint8*)malloc(256*240*multi); //mbg merge 7/17/06 added cast specbuf8bpp = (uint8*)FCEU_dmalloc(256*240*multi); //mbg merge 7/17/06 added cast
} // -Video Modes Tag- } // -Video Modes Tag-
else if(specfilt == 1 || specfilt == 4) // hq2x and hq3x else if(specfilt == 1 || specfilt == 4) // hq2x and hq3x
@ -157,8 +157,8 @@ int InitBlitToHigh(int b, uint32 rmask, uint32 gmask, uint32 bmask, int efx, int
// End iffy code // End iffy code
} }
// -Video Modes Tag- // -Video Modes Tag-
if(specfilt == 1) specbuf32bpp = (uint32*)malloc(256*240*4*sizeof(uint32)); //mbg merge 7/17/06 added cast if(specfilt == 1) specbuf32bpp = (uint32*)FCEU_dmalloc(256*240*4*sizeof(uint32)); //mbg merge 7/17/06 added cast
else if(specfilt == 4) specbuf32bpp = (uint32*)malloc(256*240*9*sizeof(uint32)); //mbg merge 7/17/06 added cast else if(specfilt == 4) specbuf32bpp = (uint32*)FCEU_dmalloc(256*240*9*sizeof(uint32)); //mbg merge 7/17/06 added cast
} }
efx=0; efx=0;
@ -173,7 +173,7 @@ int InitBlitToHigh(int b, uint32 rmask, uint32 gmask, uint32 bmask, int efx, int
else else
hq2x_InitLUTs(); hq2x_InitLUTs();
specbuf=(uint16*)malloc(256*240*sizeof(uint16)); //mbg merge 7/17/06 added cast specbuf=(uint16*)FCEU_dmalloc(256*240*sizeof(uint16)); //mbg merge 7/17/06 added cast
} }
silt = specfilt; silt = specfilt;
@ -188,16 +188,16 @@ int InitBlitToHigh(int b, uint32 rmask, uint32 gmask, uint32 bmask, int efx, int
if(efx&FVB_BLUR) if(efx&FVB_BLUR)
{ {
if(Bpp==2) if(Bpp==2)
palettetranslate=(uint32 *)malloc(65536*4); palettetranslate=(uint32 *)FCEU_dmalloc(65536*4);
else if(Bpp>=3) else if(Bpp>=3)
palettetranslate=(uint32 *)malloc(65536*4); palettetranslate=(uint32 *)FCEU_dmalloc(65536*4);
} }
else else
{ {
if(Bpp==2) if(Bpp==2)
palettetranslate=(uint32*)malloc(65536*4); palettetranslate=(uint32*)FCEU_dmalloc(65536*4);
else if(Bpp>=3) else if(Bpp>=3)
palettetranslate=(uint32*)malloc(256*4); palettetranslate=(uint32*)FCEU_dmalloc(256*4);
} }
if(!palettetranslate) if(!palettetranslate)

View File

@ -14,6 +14,7 @@
#include "sdl.h" #include "sdl.h"
#include "sdl-opengl.h" #include "sdl-opengl.h"
#include "../common/vidblit.h" #include "../common/vidblit.h"
#include "../../utils/memory.h"
#ifndef APIENTRY #ifndef APIENTRY
#define APIENTRY #define APIENTRY
@ -213,7 +214,7 @@ InitOpenGL(int l,
{ {
if(!(efx&2)) // Don't want to print out a warning message in this case... if(!(efx&2)) // Don't want to print out a warning message in this case...
FCEU_printf("Paletted texture extension not found. Using slower texture format...\n"); FCEU_printf("Paletted texture extension not found. Using slower texture format...\n");
HiBuffer=malloc(4*256*256); HiBuffer=FCEU_malloc(4*256*256);
memset(HiBuffer,0x00,4*256*256); memset(HiBuffer,0x00,4*256*256);
#ifndef LSB_FIRST #ifndef LSB_FIRST
InitBlitToHigh(4,0xFF000000,0xFF0000,0xFF00,efx&2,0,0); InitBlitToHigh(4,0xFF000000,0xFF0000,0xFF00,efx&2,0,0);
@ -246,7 +247,7 @@ InitOpenGL(int l,
p_glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MAG_FILTER,ipolate?GL_LINEAR:GL_NEAREST); p_glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MAG_FILTER,ipolate?GL_LINEAR:GL_NEAREST);
p_glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER,ipolate?GL_LINEAR:GL_NEAREST); p_glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER,ipolate?GL_LINEAR:GL_NEAREST);
buf=(uint8*)malloc(256*(256*2)*4); buf=(uint8*)FCEU_dmalloc(256*(256*2)*4);
for(y=0;y<(256*2);y++) for(y=0;y<(256*2);y++)
for(x=0;x<256;x++) for(x=0;x<256;x++)
@ -259,7 +260,7 @@ InitOpenGL(int l,
} }
p_glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA8, 256, (scanlines==2)?256*4:512, 0, p_glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA8, 256, (scanlines==2)?256*4:512, 0,
GL_RGBA,GL_UNSIGNED_BYTE,buf); GL_RGBA,GL_UNSIGNED_BYTE,buf);
free(buf); FCEU_dfree(buf);
} }
p_glBindTexture(GL_TEXTURE_2D, textures[0]); p_glBindTexture(GL_TEXTURE_2D, textures[0]);

View File

@ -28,6 +28,8 @@
#include "sdl.h" #include "sdl.h"
#include "../common/configSys.h" #include "../common/configSys.h"
#include "../../utils/memory.h"
extern Config *g_config; extern Config *g_config;
static volatile int *s_Buffer = 0; static volatile int *s_Buffer = 0;
@ -122,7 +124,9 @@ InitSound()
if (s_BufferSize < spec.samples * 2) if (s_BufferSize < spec.samples * 2)
s_BufferSize = spec.samples * 2; s_BufferSize = spec.samples * 2;
s_Buffer = (int *)malloc(sizeof(int) * s_BufferSize); s_Buffer = (int *)FCEU_dmalloc(sizeof(int) * s_BufferSize);
if (!s_Buffer)
return 0;
s_BufferRead = s_BufferWrite = s_BufferIn = 0; s_BufferRead = s_BufferWrite = s_BufferIn = 0;
//printf("SDL Size: %d, Internal size: %d\n",spec.samples,s_BufferSize); //printf("SDL Size: %d, Internal size: %d\n",spec.samples,s_BufferSize);

View File

@ -31,6 +31,8 @@
#include "../../fceu.h" #include "../../fceu.h"
#include "../../version.h" #include "../../version.h"
#include "../../utils/memory.h"
#include "sdl-icon.h" #include "sdl-icon.h"
#include "dface.h" #include "dface.h"
@ -650,7 +652,7 @@ BlitScreen(uint8 *XBuf)
if(!result || resultsize != width*height*3*2) if(!result || resultsize != width*height*3*2)
{ {
if(result) free(result); if(result) free(result);
result = (unsigned char*) malloc(resultsize = width*height*3*2); result = (unsigned char*) FCEU_dmalloc(resultsize = width*height*3*2);
} }
switch(s_curbpp) switch(s_curbpp)
{ {

View File

@ -47,6 +47,7 @@
#include "../../fceu.h" #include "../../fceu.h"
#include "../../utils/md5.h" #include "../../utils/md5.h"
#include "../../utils/memory.h"
#include <string> #include <string>
#include "../common/configSys.h" #include "../common/configSys.h"
@ -173,7 +174,7 @@ FCEUD_NetworkConnect(void)
uint32 sblen; uint32 sblen;
sblen = 4 + 16 + 16 + 64 + 1 + username.size(); sblen = 4 + 16 + 16 + 64 + 1 + username.size();
sendbuf = (uint8 *)malloc(sblen); sendbuf = (uint8 *)FCEU_dmalloc(sblen);
memset(sendbuf, 0, sblen); memset(sendbuf, 0, sblen);
// XXX soules - should use htons instead of en32() from above! // XXX soules - should use htons instead of en32() from above!
@ -218,7 +219,7 @@ FCEUD_NetworkConnect(void)
#else #else
send(s_Socket, sendbuf, sblen, 0); send(s_Socket, sendbuf, sblen, 0);
#endif #endif
free(sendbuf); FCEU_dfree(sendbuf);
#ifdef WIN32 #ifdef WIN32
recv(s_Socket, (char*)buf, 1, 0); recv(s_Socket, (char*)buf, 1, 0);
@ -338,8 +339,10 @@ FCEUD_NetworkClose(void)
void void
FCEUD_NetplayText(uint8 *text) FCEUD_NetplayText(uint8 *text)
{ {
char *tot = (char *)malloc(strlen((const char *)text) + 1); char *tot = (char *)FCEU_dmalloc(strlen((const char *)text) + 1);
char *tmp; char *tmp;
if (!tot)
return;
strcpy(tot, (const char *)text); strcpy(tot, (const char *)text);
tmp = tot; tmp = tot;
@ -350,5 +353,5 @@ FCEUD_NetplayText(uint8 *text)
tmp++; tmp++;
} }
puts(tot); puts(tot);
free(tot); FCEU_dfree(tot);
} }

View File

@ -442,7 +442,7 @@ FCEUGI *FCEUI_LoadGameVirtual(const char *name, int OverwriteVidMode)
ResetGameLoaded(); ResetGameLoaded();
if (!AutosaveStatus) if (!AutosaveStatus)
AutosaveStatus = (int*)malloc(sizeof(int)*AutosaveQty); AutosaveStatus = (int*)FCEU_dmalloc(sizeof(int)*AutosaveQty);
for (AutosaveIndex=0; AutosaveIndex<AutosaveQty; ++AutosaveIndex) for (AutosaveIndex=0; AutosaveIndex<AutosaveQty; ++AutosaveIndex)
AutosaveStatus[AutosaveIndex] = 0; AutosaveStatus[AutosaveIndex] = 0;

View File

@ -1504,7 +1504,7 @@ static int NewiNES_Init(int num)
{ {
CloseHandle(mapVROM); CloseHandle(mapVROM);
mapVROM = NULL; mapVROM = NULL;
if((VROM = (uint8 *)malloc(CHRRAMSize)) == NULL) return 0; if((VROM = (uint8 *)FCEU_dmalloc(CHRRAMSize)) == NULL) return 0;
} }
else else
{ {
@ -1512,11 +1512,11 @@ static int NewiNES_Init(int num)
{ {
CloseHandle(mapVROM); CloseHandle(mapVROM);
mapVROM = NULL; mapVROM = NULL;
if((VROM = (uint8 *)malloc(CHRRAMSize)) == NULL) return 0; if((VROM = (uint8 *)FCEU_dmalloc(CHRRAMSize)) == NULL) return 0;
} }
} }
#else #else
if((VROM = (uint8 *)malloc(CHRRAMSize)) == NULL) return 0; if((VROM = (uint8 *)FCEU_dmalloc(CHRRAMSize)) == NULL) return 0;
#endif #endif
UNIFchrrama=VROM; UNIFchrrama=VROM;
SetupCartCHRMapping(0,VROM,CHRRAMSize,1); SetupCartCHRMapping(0,VROM,CHRRAMSize,1);

View File

@ -2763,7 +2763,7 @@ static int movie_isfromsavestate (lua_State *L) {
// Common code by the gui library: make sure the screen array is ready // Common code by the gui library: make sure the screen array is ready
static void gui_prepare() { static void gui_prepare() {
if (!gui_data) if (!gui_data)
gui_data = (uint8*) malloc(LUA_SCREEN_WIDTH*LUA_SCREEN_HEIGHT*4); gui_data = (uint8*) FCEU_dmalloc(LUA_SCREEN_WIDTH*LUA_SCREEN_HEIGHT*4);
if (gui_used != GUI_USED_SINCE_LAST_DISPLAY) if (gui_used != GUI_USED_SINCE_LAST_DISPLAY)
memset(gui_data, 0, LUA_SCREEN_WIDTH*LUA_SCREEN_HEIGHT*4); memset(gui_data, 0, LUA_SCREEN_WIDTH*LUA_SCREEN_HEIGHT*4);
gui_used = GUI_USED_SINCE_LAST_DISPLAY; gui_used = GUI_USED_SINCE_LAST_DISPLAY;
@ -4190,7 +4190,7 @@ static int doPopup(lua_State *L, const char* deftype, const char* deficon) {
*colon++ = 0; *colon++ = 0;
int len = strlen(current); int len = strlen(current);
char *filename = (char*)malloc(len + 12); // always give excess char *filename = (char*)FCEU_dmalloc(len + 12); // always give excess
snprintf(filename, len+12, "%s/xmessage", current); snprintf(filename, len+12, "%s/xmessage", current);
if (access(filename, X_OK) == 0) { if (access(filename, X_OK) == 0) {

View File

@ -37,6 +37,7 @@
#include "cheat.h" #include "cheat.h"
#include "input.h" #include "input.h"
#include "driver.h" #include "driver.h"
#include "utils/memory.h"
int FCEUnetplay=0; int FCEUnetplay=0;
@ -120,11 +121,11 @@ int FCEUNET_SendFile(uint8 cmd, char *fn)
fstat(fileno(fp),&sb); fstat(fileno(fp),&sb);
len = sb.st_size; len = sb.st_size;
buf = (char*)malloc(len); //mbg merge 7/17/06 added cast buf = (char*)FCEU_dmalloc(len); //mbg merge 7/17/06 added cast
fread(buf, 1, len, fp); fread(buf, 1, len, fp);
fclose(fp); fclose(fp);
cbuf = (char*)malloc(4 + len + len / 1000 + 12); //mbg merge 7/17/06 added cast cbuf = (char*)FCEU_dmalloc(4 + len + len / 1000 + 12); //mbg merge 7/17/06 added cast
FCEU_en32lsb((uint8*)cbuf, len); //mbg merge 7/17/06 added cast FCEU_en32lsb((uint8*)cbuf, len); //mbg merge 7/17/06 added cast
compress2((uint8*)cbuf + 4, &clen, (uint8*)buf, len, 7); //mbg merge 7/17/06 added casts compress2((uint8*)cbuf + 4, &clen, (uint8*)buf, len, 7); //mbg merge 7/17/06 added casts
free(buf); free(buf);
@ -164,9 +165,9 @@ static FILE *FetchFile(uint32 remlen)
} }
//printf("Receiving file: %d...\n",clen); //printf("Receiving file: %d...\n",clen);
if(fp = tmpfile()) if((fp = tmpfile()))
{ {
cbuf = (char *)malloc(clen); //mbg merge 7/17/06 added cast cbuf = (char *)FCEU_dmalloc(clen); //mbg merge 7/17/06 added cast
if(!FCEUD_RecvData(cbuf, clen)) if(!FCEUD_RecvData(cbuf, clen))
{ {
NetError(); NetError();
@ -183,7 +184,7 @@ static FILE *FetchFile(uint32 remlen)
free(cbuf); free(cbuf);
return(0); return(0);
} }
buf = (char *)malloc(len); //mbg merge 7/17/06 added cast buf = (char *)FCEU_dmalloc(len); //mbg merge 7/17/06 added cast
uncompress((uint8*)buf, &len, (uint8*)cbuf + 4, clen - 4); //mbg merge 7/17/06 added casts uncompress((uint8*)buf, &len, (uint8*)cbuf + 4, clen - 4); //mbg merge 7/17/06 added casts
fwrite(buf, 1, len, fp); fwrite(buf, 1, len, fp);

View File

@ -23,56 +23,66 @@
#include <stdlib.h> #include <stdlib.h>
#include <stdio.h> #include <stdio.h>
#include <string.h> #include <string.h>
#include "../types.h" #include "../types.h"
#include "../fceu.h" #include "../fceu.h"
#include "memory.h" #include "memory.h"
///allocates the specified number of bytes. exits process if this fails ///allocates the specified number of bytes. exits process if this fails
void *FCEU_gmalloc(uint32 size) void *FCEU_gmalloc(uint32 size)
{ {
void *ret; void *ret;
ret=malloc(size); ret=malloc(size);
if(!ret) if(!ret)
{ {
FCEU_PrintError("Error allocating memory! Doing a hard exit."); FCEU_PrintError("Error allocating memory! Doing a hard exit.");
exit(1); exit(1);
} }
//mbg 6/17/08 - sometimes this memory is used as RAM or somesuch without clearing first. //mbg 6/17/08 - sometimes this memory is used as RAM or somesuch without clearing first.
//this yields different behavior in debug and release modes. //this yields different behavior in debug and release modes.
//specifically, saveram wasnt getting cleared so the games thought their savefiles were initialized //specifically, saveram wasnt getting cleared so the games thought their savefiles were initialized
//so we are going to clear it here. //so we are going to clear it here.
memset(ret,0,size); memset(ret,0,size);
return ret; return ret;
} }
///allocates the specified number of bytes. returns null if this fails ///allocates the specified number of bytes. returns null if this fails
void *FCEU_malloc(uint32 size) void *FCEU_malloc(uint32 size)
{ {
void *ret; void *ret;
ret=malloc(size); ret=malloc(size);
if(!ret) if(!ret)
{ {
FCEU_PrintError("Error allocating memory!"); FCEU_PrintError("Error allocating memory!");
return(0); return(0);
} }
//mbg 6/17/08 - sometimes this memory is used as RAM or somesuch without clearing first. //mbg 6/17/08 - sometimes this memory is used as RAM or somesuch without clearing first.
//this yields different behavior in debug and release modes. //this yields different behavior in debug and release modes.
//specifically, saveram wasnt getting cleared so the games thought their savefiles were initialized //specifically, saveram wasnt getting cleared so the games thought their savefiles were initialized
//so we are going to clear it here. //so we are going to clear it here.
memset(ret,0,size); memset(ret,0,size);
return ret; return ret;
} }
///frees memory allocated with FCEU_gmalloc ///frees memory allocated with FCEU_gmalloc
void FCEU_gfree(void *ptr) void FCEU_gfree(void *ptr)
{ {
free(ptr); free(ptr);
} }
///frees memory allocated with FCEU_malloc ///frees memory allocated with FCEU_malloc
void FCEU_free(void *ptr) // Might do something with this and FCEU_malloc later... void FCEU_free(void *ptr) // Might do something with this and FCEU_malloc later...
{ {
free(ptr); free(ptr);
} }
void *FCEU_dmalloc(uint32 size)
{
return malloc(size);
}
void FCEU_dfree(void *ptr)
{
free(ptr);
}

View File

@ -29,3 +29,8 @@ void *FCEU_gmalloc(uint32 size);
void FCEU_gfree(void *ptr); void FCEU_gfree(void *ptr);
void FCEU_free(void *ptr); void FCEU_free(void *ptr);
void FCEU_memmove(void *d, void *s, uint32 l); void FCEU_memmove(void *d, void *s, uint32 l);
// wrapper for debugging when its needed, otherwise act like
// normal malloc/free
void *FCEU_dmalloc(uint32 size);
void FCEU_dfree(void *ptr);

View File

@ -628,7 +628,7 @@ int SaveSnapshot(void)
uint8 *tmp=XBuf+FSettings.FirstSLine*256; uint8 *tmp=XBuf+FSettings.FirstSLine*256;
uint8 *dest,*mal,*mork; uint8 *dest,*mal,*mork;
if(!(mal=mork=dest=(uint8 *)malloc((totallines<<8)+totallines))) if(!(mal=mork=dest=(uint8 *)FCEU_dmalloc((totallines<<8)+totallines)))
goto PNGerr; goto PNGerr;
// mork=dest=XBuf; // mork=dest=XBuf;
@ -723,7 +723,7 @@ int SaveSnapshot(char fileName[512])
uint8 *tmp=XBuf+FSettings.FirstSLine*256; uint8 *tmp=XBuf+FSettings.FirstSLine*256;
uint8 *dest,*mal,*mork; uint8 *dest,*mal,*mork;
if(!(mal=mork=dest=(uint8 *)malloc((totallines<<8)+totallines))) if(!(mal=mork=dest=(uint8 *)FCEU_dmalloc((totallines<<8)+totallines)))
goto PNGerr; goto PNGerr;
// mork=dest=XBuf; // mork=dest=XBuf;
@ -780,4 +780,4 @@ void ShowFPS(void)
// It's not averaging FPS over exactly 1 second, but it's close enough. // It's not averaging FPS over exactly 1 second, but it's close enough.
boopcount = (boopcount + 1) % booplimit; boopcount = (boopcount + 1) % booplimit;
} }
#endif #endif