fix a rather nasty mem leak with savebuffer

This commit is contained in:
dborth 2008-09-26 04:34:33 +00:00
parent f15890e169
commit dfc7ddd8e3
10 changed files with 19 additions and 46 deletions

View File

@ -18,7 +18,6 @@
#include "menudraw.h" #include "menudraw.h"
extern SCheatData Cheat; extern SCheatData Cheat;
extern unsigned char savebuffer[];
/**************************************************************************** /****************************************************************************
* NGCLoadCheatFile * NGCLoadCheatFile

View File

@ -17,21 +17,15 @@
#include <string.h> #include <string.h>
#ifdef WII_DVD #ifdef WII_DVD
#ifdef __cplusplus
extern "C" { extern "C" {
#include <di/di.h> #include <di/di.h>
} }
#endif #endif
#endif
#include "menudraw.h" #include "menudraw.h"
#include "snes9xGX.h" #include "snes9xGX.h"
#include "unzip.h" #include "unzip.h"
extern int offset;
extern int selection;
extern FILEENTRIES filelist[MAXFILES];
extern int maxfiles;
u64 dvddir = 0; u64 dvddir = 0;
u64 dvdrootdir = 0; u64 dvdrootdir = 0;
int dvddirlength = 0; int dvddirlength = 0;

View File

@ -29,13 +29,6 @@
FILE * filehandle; FILE * filehandle;
extern unsigned char savebuffer[];
extern char output[16384];
extern int offset;
extern int selection;
extern char currentdir[MAXPATHLEN];
extern FILEENTRIES filelist[MAXFILES];
/**************************************************************************** /****************************************************************************
* fat_is_mounted * fat_is_mounted
* to check whether FAT media are detected. * to check whether FAT media are detected.

View File

@ -18,6 +18,7 @@
#include <string.h> #include <string.h>
#include <wiiuse/wpad.h> #include <wiiuse/wpad.h>
#include <sys/dir.h> #include <sys/dir.h>
#include <malloc.h>
#ifdef WII_DVD #ifdef WII_DVD
extern "C" { extern "C" {
@ -33,7 +34,6 @@ extern "C" {
#include "menudraw.h" #include "menudraw.h"
#include "video.h" #include "video.h"
#include "aram.h" #include "aram.h"
#include "filesel.h"
#include "smbop.h" #include "smbop.h"
#include "fileop.h" #include "fileop.h"
#include "memcardop.h" #include "memcardop.h"
@ -55,15 +55,19 @@ int hasloaded = 0;
// Global file entry table // Global file entry table
FILEENTRIES filelist[MAXFILES]; FILEENTRIES filelist[MAXFILES];
unsigned char savebuffer[SAVEBUFFERSIZE] ATTRIBUTE_ALIGN (32); unsigned char *savebuffer = NULL;
/**************************************************************************** /****************************************************************************
* ClearSaveBuffer () * ClearSaveBuffer ()
* Clear the savebuffer * Allocate and clear the savebuffer
***************************************************************************/ ***************************************************************************/
void void
ClearSaveBuffer () ClearSaveBuffer ()
{ {
if (savebuffer)
free(savebuffer);
savebuffer = (unsigned char *) memalign(32, SAVEBUFFERSIZE);
memset (savebuffer, 0, SAVEBUFFERSIZE); memset (savebuffer, 0, SAVEBUFFERSIZE);
} }

View File

@ -14,7 +14,9 @@
#ifndef _NGCFILESEL_ #ifndef _NGCFILESEL_
#define _NGCFILESEL_ #define _NGCFILESEL_
#define SAVEBUFFERSIZE ((512 * 1024) + 2048 + 64 + 4 + 4) #include <unistd.h>
#define SAVEBUFFERSIZE (512 * 1024)
#define MAXJOLIET 255 #define MAXJOLIET 255
#define MAXDISPLAY 54 #define MAXDISPLAY 54
@ -29,6 +31,11 @@ typedef struct
#define MAXFILES 2000 // Restrict to 2000 files per dir #define MAXFILES 2000 // Restrict to 2000 files per dir
extern FILEENTRIES filelist[MAXFILES]; extern FILEENTRIES filelist[MAXFILES];
extern unsigned char *savebuffer;
extern int offset;
extern int selection;
extern char currentdir[MAXPATHLEN];
extern int maxfiles;
void ClearSaveBuffer (); void ClearSaveBuffer ();
int OpenROM (int method); int OpenROM (int method);

View File

@ -40,7 +40,6 @@
extern void S9xSRTCPreSaveState (); extern void S9xSRTCPreSaveState ();
extern void NGCFreezeStruct (); extern void NGCFreezeStruct ();
extern bool8 S9xUnfreezeGame (const char *filename); extern bool8 S9xUnfreezeGame (const char *filename);
extern unsigned char savebuffer[];
static int bufoffset; static int bufoffset;

View File

@ -17,18 +17,6 @@
#include <string.h> #include <string.h>
#include <unistd.h> #include <unistd.h>
#include "snes9x.h"
#include "memmap.h"
#include "debug.h"
#include "cpuexec.h"
#include "ppu.h"
#include "apu.h"
#include "display.h"
#include "gfx.h"
#include "soundux.h"
#include "spc700.h"
#include "spc7110.h"
#include "snes9xGX.h" #include "snes9xGX.h"
#include "video.h" #include "video.h"
#include "menudraw.h" #include "menudraw.h"
@ -39,10 +27,10 @@
#include "preferences.h" #include "preferences.h"
#include "memcardop.h" #include "memcardop.h"
#include "fileop.h" #include "fileop.h"
#include "filesel.h"
#define VERIFBUFFERSIZE 65536 #define VERIFBUFFERSIZE 65536
static u8 SysArea[CARD_WORKAREA] ATTRIBUTE_ALIGN (32); static u8 SysArea[CARD_WORKAREA] ATTRIBUTE_ALIGN (32);
extern unsigned char savebuffer[];
unsigned char verifbuffer[VERIFBUFFERSIZE] ATTRIBUTE_ALIGN (32); unsigned char verifbuffer[VERIFBUFFERSIZE] ATTRIBUTE_ALIGN (32);
card_dir CardDir; card_dir CardDir;
card_file CardFile; card_file CardFile;

View File

@ -26,7 +26,6 @@
#include "smbop.h" #include "smbop.h"
#include "filesel.h" #include "filesel.h"
extern unsigned char savebuffer[];
extern int currconfig[4]; extern int currconfig[4];
// button map configurations // button map configurations
@ -120,7 +119,7 @@ int
preparePrefsData (int method) preparePrefsData (int method)
{ {
int offset = 0; int offset = 0;
memset (savebuffer, 0, SAVEBUFFERSIZE); ClearSaveBuffer ();
// add save icon and comments for Memory Card saves // add save icon and comments for Memory Card saves
if(method == METHOD_MC_SLOTA || method == METHOD_MC_SLOTB) if(method == METHOD_MC_SLOTA || method == METHOD_MC_SLOTB)

View File

@ -35,14 +35,6 @@ unsigned int SMBTimer = 0;
SMBCONN smbconn; SMBCONN smbconn;
#define ZIPCHUNK 16384 #define ZIPCHUNK 16384
extern unsigned char savebuffer[];
extern char output[16384];
extern int offset;
extern int selection;
extern char currentdir[MAXPATHLEN];
extern FILEENTRIES filelist[MAXFILES];
/**************************************************************************** /****************************************************************************
* InitializeNetwork * InitializeNetwork
* Initializes the Wii/GameCube network interface * Initializes the Wii/GameCube network interface
@ -281,7 +273,6 @@ SaveBufferToSMB (char *filepath, int datasize, bool8 silent)
WaitPrompt (msg); WaitPrompt (msg);
} }
ClearSaveBuffer ();
return boffset; return boffset;
} }

View File

@ -27,7 +27,6 @@
#include "smbop.h" #include "smbop.h"
#include "filesel.h" #include "filesel.h"
extern unsigned char savebuffer[];
extern int padcal; extern int padcal;
extern unsigned short gcpadmap[]; extern unsigned short gcpadmap[];