-all free should be safe now :P

This commit is contained in:
fix94.1 2012-05-13 17:25:26 +00:00
parent 04c4025766
commit 7e453d5b97
21 changed files with 184 additions and 131 deletions

View File

@ -566,9 +566,8 @@ unsigned char * MD5fromFile(unsigned char *dst, const char *src)
else
blksize = 1048576;
unsigned char * buffer = MEM2_alloc(blksize);
if(!!buffer)
unsigned char * buffer = MEM2_alloc(blksize);
if(buffer == NULL)
{
//no memory
fclose(file);
@ -579,7 +578,6 @@ unsigned char * MD5fromFile(unsigned char *dst, const char *src)
{
read = fread(buffer, 1, blksize, file);
(void)auth_md5SumCtx( ctx, buffer, read ); /* Pass only one block. */
} while(read > 0);
fclose(file);

View File

@ -82,7 +82,8 @@ Banner::Banner(u8 *bnr, u64 title)
Banner::~Banner()
{
MEM2_free(opening);
if(opening != NULL)
MEM2_free(opening);
}
bool Banner::IsValid()
@ -152,10 +153,11 @@ Banner * Banner::GetBanner(u64 title, char *appname, bool isfs, bool imetOnly)
{
u32 size = 0;
buf = ISFS_GetFile((u8 *) appname, &size, imetOnly ? sizeof(IMET) + IMET_OFFSET : 0);
buf = ISFS_GetFile((u8 *)appname, &size, imetOnly ? sizeof(IMET) + IMET_OFFSET : 0);
if (size == 0)
{
free(buf);
if(buf != NULL)
MEM2_free(buf);
return NULL;
}
}
@ -171,12 +173,14 @@ Banner * Banner::GetBanner(u64 title, char *appname, bool isfs, bool imetOnly)
size = ftell(fp);
fseek(fp, 0, SEEK_SET);
}
buf = MEM2_alloc(size);
if(!buf)
return NULL;
fread(buf, size, 1, fp);
fclose(fp);
}
return new Banner((u8 *)buf, title);
}
}

View File

@ -43,7 +43,7 @@ s32 BootChannel(u8 *data, u64 chantitle, u8 vidMode, bool vipatch, bool countryS
Identify(chantitle, &ios);
entryPoint = LoadChannel(data);
free(data);
MEM2_free(data);
/* Select an appropriate video mode */
GXRModeObj * vmode = __Disc_SelectVMode(vidMode, chantitle);
@ -243,8 +243,8 @@ bool Identify(u64 titleid, u32 *ios)
if (certBuffer == NULL || certSize == 0)
{
gprintf("Reading certs...Failed!\n");
free(tmdBuffer);
free(tikBuffer);
MEM2_free(tmdBuffer);
MEM2_free(tikBuffer);
return false;
}
@ -271,9 +271,9 @@ bool Identify(u64 titleid, u32 *ios)
}
}
free(tmdBuffer);
free(tikBuffer);
free(certBuffer);
MEM2_free(tmdBuffer);
MEM2_free(tikBuffer);
MEM2_free(certBuffer);
return ret < 0 ? false : true;
}
@ -297,10 +297,10 @@ u8 * GetDol(u64 title, u32 bootcontent)
if (decompressLZ77content(data, contentSize, &decompressed, &size) < 0)
{
gprintf("Decompression failed\n");
free(data);
MEM2_free(data);
return NULL;
}
free(data);
MEM2_free(data);
data = decompressed;
}
return data;

View File

@ -92,12 +92,14 @@ u8 Channels::GetRequestedIOS(u64 title)
sprintf(tmd, "/title/%08x/%08x/content/title.tmd", TITLE_UPPER(title), TITLE_LOWER(title));
u32 size;
u8 *titleTMD = (u8 *) ISFS_GetFile((u8 *) &tmd, &size, -1);
u8 *titleTMD = (u8 *)ISFS_GetFile((u8 *) &tmd, &size, -1);
if(titleTMD == NULL)
return 0;
if(size > 0x18B)
IOS = titleTMD[0x18B];
free(titleTMD);
MEM2_free(titleTMD);
return IOS;
}
@ -113,20 +115,18 @@ u64* Channels::GetChannelList(u32* count)
if (ES_GetNumTitles(&countall) < 0 || !countall) return NULL;
u64* titles = (u64*)MEM2_alloc(countall * sizeof(u64));
if (!titles) return NULL;
if (!titles)
return NULL;
if(ES_GetTitles(titles, countall) < 0)
{
free(titles);
MEM2_free(titles);
return NULL;
}
u64* channels = (u64*)MEM2_alloc(countall * sizeof(u64));
if (!channels)
{
free(titles);
return NULL;
}
*count = 0;
for (u32 i = 0; i < countall; i++)
@ -138,13 +138,12 @@ u64* Channels::GetChannelList(u32* count)
if (TITLE_LOWER(titles[i]) == RF_NEWS_CHANNEL || // skip region free news and forecast channel
TITLE_LOWER(titles[i]) == RF_FORECAST_CHANNEL)
continue;
channels[(*count)++] = titles[i];
}
}
free(titles);
MEM2_free(titles);
return (u64*)MEM2_realloc(channels, *count * sizeof(u64));
return(u64*)MEM2_realloc(channels, *count * sizeof(u64));
}
bool Channels::GetAppNameFromTmd(u64 title, char* app, bool dol, u32* bootcontent)
@ -156,11 +155,13 @@ bool Channels::GetAppNameFromTmd(u64 title, char* app, bool dol, u32* bootconten
u32 size;
u8 *data = ISFS_GetFile((u8 *) &tmd, &size, -1);
if (data == NULL || size < 0x208) return ret;
if (data == NULL || size < 0x208)
return ret;
_tmd * tmd_file = (_tmd *) SIGNATURE_PAYLOAD((u32 *)data);
_tmd *tmd_file = (_tmd *)SIGNATURE_PAYLOAD((u32 *)data);
u16 i;
for(i = 0; i < tmd_file->num_contents; ++i)
{
if(tmd_file->contents[i].index == (dol ? tmd_file->boot_index : 0))
{
*bootcontent = tmd_file->contents[i].cid;
@ -168,8 +169,9 @@ bool Channels::GetAppNameFromTmd(u64 title, char* app, bool dol, u32* bootconten
ret = true;
break;
}
}
free(data);
MEM2_free(data);
return ret;
}
@ -224,7 +226,8 @@ void Channels::Search(u32 channelType, string lang)
{
u32 count;
u64* list = GetChannelList(&count);
if (!list) return;
if (list == NULL)
return;
int language = lang.size() == 0 ? CONF_GetLanguage() : GetLanguage(lang.c_str());
@ -245,7 +248,7 @@ void Channels::Search(u32 channelType, string lang)
}
}
free(list);
MEM2_free(list);
}
wchar_t * Channels::GetName(int index)

View File

@ -234,19 +234,27 @@ void Nand::__GetNameList(const char *source, namelist **entries, int *count)
{
u32 i, j, k, l;
u32 numentries = 0;
char *names;
char *names = NULL;
char curentry[ISFS_MAXPATH];
char entrypath[ISFS_MAXPATH];
s32 ret = ISFS_ReadDir(source, NULL, &numentries);
names = (char *)MEM2_alloc((ISFS_MAXPATH) * numentries);
if(names == NULL)
return;
ret = ISFS_ReadDir(source, names, &numentries);
*count = numentries;
if(*entries)
if(*entries != NULL)
{
MEM2_free(*entries);
*entries = NULL;
}
*entries = (namelist *)MEM2_alloc(sizeof(namelist)*numentries);
*entries = (namelist *)MEM2_alloc(sizeof(namelist) * numentries);
if(*entries == NULL)
return;
for(i = 0, k = 0; i < numentries; i++)
{
@ -273,6 +281,9 @@ s32 Nand::__configread(void)
{
confbuffer = (u8 *)MEM2_alloc(0x4000);
txtbuffer = (char *)MEM2_alloc(0x100);
if(confbuffer == NULL || txtbuffer == NULL)
return -1;
cfg_hdr = (config_header *)NULL;
FILE *f = fopen(cfgpath, "rb");
@ -322,16 +333,16 @@ s32 Nand::__configwrite(void)
fwrite(txtbuffer, 1, 0x100, f);
gprintf("setting.txt written to: \"%s\"\n", settxtpath);
fclose(f);
}
}
configloaded = configloaded ? false : true;
if(!tbdec && !configloaded)
return 1;
return 1;
}
}
free(confbuffer);
free(txtbuffer);
return 0;
MEM2_free(confbuffer);
MEM2_free(txtbuffer);
return 0;
}
u32 Nand::__configsetbyte(const char *item, u8 val)
@ -512,6 +523,9 @@ s32 Nand::__FlashNandFile(const char *source, const char *dest)
}
u8 *buffer = (u8 *)MEM2_alloc(BLOCK);
if(buffer == NULL)
return -1;
u32 toread = fsize;
while(toread > 0)
{
@ -572,6 +586,9 @@ s32 Nand::__DumpNandFile(const char *source, const char *dest)
}
fstats *status = (fstats *)MEM2_alloc(sizeof(fstats));
if(status == NULL)
return -1;
s32 ret = ISFS_GetFileStats(fd, status);
if (ret < 0)
{
@ -605,6 +622,9 @@ s32 Nand::__DumpNandFile(const char *source, const char *dest)
gprintf("Dumping: %s (%ukb)...", source, (status->file_length / 0x400)+1);
u8 *buffer = (u8 *)MEM2_alloc(BLOCK);
if(buffer == NULL)
return -1;
u32 toread = status->file_length;
while(toread > 0)
{
@ -740,7 +760,7 @@ s32 Nand::__DumpNandFolder(const char *source, const char *dest)
__DumpNandFolder(nsource, dest);
}
}
free(names);
MEM2_free(names);
return 0;
}
@ -777,9 +797,9 @@ void Nand::CreatePath(const char *path, ...)
gprintf("Folder \"%s\" exists\n", folder);
closedir(d);
}
free(folder);
}
va_end(args);
free(folder);
}
void Nand::CreateTitleTMD(const char *path, dir_discHdr *hdr)
@ -792,7 +812,7 @@ void Nand::CreateTitleTMD(const char *path, dir_discHdr *hdr)
u32 tmd_size = wbfs_extract_file(disc, (char *) "TMD", (void **)&titleTMD);
WBFS_CloseDisc(disc);
if(!titleTMD)
if(titleTMD == NULL)
return;
u32 highTID = *(u32*)(titleTMD+0x18c);
@ -810,7 +830,7 @@ void Nand::CreateTitleTMD(const char *path, dir_discHdr *hdr)
struct stat filestat;
if (stat(nandpath, &filestat) == 0)
{
free(titleTMD);
MEM2_free(titleTMD);
gprintf("%s Exists!\n", nandpath);
return;
}
@ -826,7 +846,7 @@ void Nand::CreateTitleTMD(const char *path, dir_discHdr *hdr)
else
gprintf("Creating title TMD: %s failed (%i)\n", nandpath, file);
free(titleTMD);
MEM2_free(titleTMD);
}
s32 Nand::FlashToNAND(const char *source, const char *dest, dump_callback_t i_dumper, void *i_data)

View File

@ -178,7 +178,8 @@ void PartitionHandle::UnMount(int pos)
int PartitionHandle::FindPartitions()
{
MASTER_BOOT_RECORD *mbr = (MASTER_BOOT_RECORD *)MEM2_alloc(MAX_BYTES_PER_SECTOR);
if(!mbr) return -1;
if(mbr == NULL)
return -1;
// Read the first sector on the device
if(!interface->readSectors(0, 1, mbr))
@ -249,6 +250,8 @@ int PartitionHandle::FindPartitions()
void PartitionHandle::CheckEBR(u8 PartNum, sec_t ebr_lba)
{
EXTENDED_BOOT_RECORD *ebr = (EXTENDED_BOOT_RECORD *)MEM2_alloc(MAX_BYTES_PER_SECTOR);
if(ebr == NULL)
return;
sec_t next_erb_lba = 0;
do
@ -293,12 +296,13 @@ void PartitionHandle::CheckEBR(u8 PartNum, sec_t ebr_lba)
bool PartitionHandle::CheckGPT(void)
{
GPT_PARTITION_TABLE *gpt = (GPT_PARTITION_TABLE *)MEM2_alloc(MAX_BYTES_PER_SECTOR);
if(!gpt) return false;
if(gpt == NULL)
return false;
bool success = false; // To return false unless at least 1 partition is verified
if(!interface->readSectors(1, 33, gpt))
{
free(gpt);
MEM2_free(gpt);
return false; // To read all 128 possible partitions
}
@ -310,14 +314,19 @@ bool PartitionHandle::CheckGPT(void)
|| (le64(gpt->First_Usable_LBA) != 34)
|| (gpt->Reserved != 0))
{
free(gpt);
MEM2_free(gpt);
return false;
}
for(u8 i = 0; i < le32(gpt->Num_Entries) && PartitionList.size() <= 8; i++)
{
GUID_PARTITION_ENTRY * entry = (GUID_PARTITION_ENTRY *) &gpt->partitions[i];
GUID_PARTITION_ENTRY *entry = (GUID_PARTITION_ENTRY *) &gpt->partitions[i];
VOLUME_BOOT_RECORD *vbr = (VOLUME_BOOT_RECORD*)MEM2_alloc(MAX_BYTES_PER_SECTOR);
if(vbr == NULL)
{
MEM2_free(gpt);
return false;
}
int Start = le64(entry->First_LBA);
int End = le64(entry->Last_LBA);
@ -378,9 +387,9 @@ bool PartitionHandle::CheckGPT(void)
success = true;
PartitionList.push_back(PartitionEntry);
}
free(vbr);
MEM2_free(vbr);
}
free(gpt);
MEM2_free(gpt);
return success;
}

View File

@ -196,10 +196,12 @@ bool fsop_CopyFile (char *source, char *target, progress_callback_t spinner, voi
// Return to beginning....
fseek(fs, 0, SEEK_SET);
u8 * threadStack = NULL;
u8 *threadStack = NULL;
lwp_t hthread = LWP_THREAD_NULL;
buff = MEM2_alloc(block*2);
if(buff == NULL)
return false;
blockIdx = 0;
blockReady = 0;
@ -207,6 +209,9 @@ bool fsop_CopyFile (char *source, char *target, progress_callback_t spinner, voi
blockInfo[1] = 0;
threadStack = MEM2_alloc(STACKSIZE);
if(threadStack == NULL)
return false;
LWP_CreateThread (&hthread, thread_CopyFileReader, NULL, threadStack, STACKSIZE, 30);
while (stopThread != 0)

View File

@ -151,6 +151,8 @@ void DML_New_SetOptions(char *GamePath, char *CheatPath, char *NewCheatPath, boo
gprintf("Wiiflow DML: Launch game 'sd:/games/%s/game.iso' through memory (new method)\n", GamePath);
DMLCfg = (DML_CFG*)MEM2_alloc(sizeof(DML_CFG));
if(DMLCfg == NULL)
return;
memset(DMLCfg, 0, sizeof(DML_CFG));
DMLCfg->Magicbytes = 0xD1050CF6;
@ -222,6 +224,8 @@ void DML_New_SetBootDiscOption()
gprintf("Booting GC game\n");
DMLCfg = (DML_CFG*)MEM2_alloc(sizeof(DML_CFG));
if(DMLCfg == NULL)
return;
memset(DMLCfg, 0, sizeof(DML_CFG));
DMLCfg->Magicbytes = 0xD1050CF6;

View File

@ -70,6 +70,9 @@ static void USBGeckoOutput()
void WriteToFile(char* tmp)
{
if(tmpfilebuffer == NULL)
return;
if(bufferMessages)
{
if((strlen(tmpfilebuffer) + strlen(tmp)) < filebuffer)
@ -77,11 +80,8 @@ void WriteToFile(char* tmp)
}
else
{
if(tmpfilebuffer != NULL)
{
MEM2_free(tmpfilebuffer);
tmpfilebuffer = NULL;
}
MEM2_free(tmpfilebuffer);
tmpfilebuffer = NULL;
return;
}
@ -100,19 +100,17 @@ void WriteToFile(char* tmp)
//using the gprintf from crediar because it is smaller than mine
void gprintf( const char *format, ... )
{
char * tmp = NULL;
char *tmp = NULL;
va_list va;
va_start(va, format);
if((vasprintf(&tmp, format, va) >= 0) && tmp)
{
WriteToFile(tmp);
WifiGecko_Send(tmp, strlen(tmp));
if (geckoinit)
__out_write(NULL, 0, tmp, strlen(tmp));
__out_write(NULL, 0, tmp, strlen(tmp));
free(tmp);
}
va_end(va);
free(tmp);
}
char ascii(char s)
@ -157,13 +155,14 @@ void ghexdump(void *d, int len)
bool InitGecko()
{
if (geckoinit)
if(geckoinit)
return geckoinit;
USBGeckoOutput();
tmpfilebuffer = (char*)MEM2_alloc(filebuffer + 1 * sizeof(char));
memset(tmpfilebuffer, 0, sizeof(tmpfilebuffer));
if(tmpfilebuffer != NULL)
memset(tmpfilebuffer, 0, sizeof(tmpfilebuffer));
#ifdef sd_write_log
WriteToSD = true;

View File

@ -131,19 +131,3 @@ int WifiGecko_Send(const char * data, int datasize)
return ret;
}
void wifi_printf(const char * format, ...)
{
if (!init) return;
char * tmp = NULL;
va_list va;
va_start(va, format);
if((vasprintf(&tmp, format, va) >= 0) && tmp)
{
WifiGecko_Send(tmp, strlen(tmp));
}
va_end(va);
free(tmp);
}

View File

@ -36,7 +36,6 @@ void WifiGecko_Init(const char *ip, u16 port);
int WifiGecko_Connect();
void WifiGecko_Close();
int WifiGecko_Send(const char * data, int datasize);
void wifi_printf(const char * format, ...);
#ifdef __cplusplus
}

View File

@ -131,7 +131,8 @@ bool WiiMovie::Play(bool loop)
gprintf("Start playing video\n");
PlayThreadStack = (u8 *)MEM2_alloc(32768);
if (PlayThreadStack == NULL) return false;
if (PlayThreadStack == NULL)
return false;
Playing = true;
PlayTime.reset();
@ -151,13 +152,13 @@ void WiiMovie::Stop()
gprintf("Stopping WiiMovie video\n");
ExitRequested = true;
if (PlayThread != LWP_THREAD_NULL)
{
LWP_JoinThread(PlayThread, NULL);
}
PlayThread = LWP_THREAD_NULL;
gprintf("Playing thread stopped\n");
MEM2_free(PlayThreadStack);
if(PlayThreadStack != NULL)
MEM2_free(PlayThreadStack);
}
void WiiMovie::SetVolume(int vol)

View File

@ -300,7 +300,8 @@ const u8* VideoFrame::getData() const
void VideoFrame::dealloc()
{
MEM2_free(_data);
if(_data != NULL)
MEM2_free(_data);
_w = _h = _p = 0;
}

View File

@ -79,16 +79,18 @@ IMGCTX PNGU_SelectImageFromDevice (const char *filename)
return NULL;
IMGCTX ctx = MEM2_alloc(sizeof (struct _IMGCTX));
if (!ctx) return NULL;
if (ctx == NULL)
return NULL;
ctx->buffer = NULL;
ctx->source = PNGU_SOURCE_DEVICE;
ctx->cursor = 0;
ctx->filename = MEM2_alloc(strlen (filename) + 1);
if (!ctx->filename)
if (ctx->filename == NULL)
{
MEM2_free(ctx);
if(ctx != NULL)
MEM2_free(ctx);
return NULL;
}
strcpy(ctx->filename, filename);

View File

@ -45,7 +45,7 @@ bool cIOSInfo::D2X(u8 ios, u8 *base)
if(!info)
return false;
*base = (u8)info->baseios;
free(info);
MEM2_free(info);
return true;
}
@ -59,25 +59,27 @@ iosinfo_t *cIOSInfo::GetInfo(u8 ios)
u32 TMD_Length;
if (ES_GetStoredTMDSize(TITLE_ID(1, ios), &TMD_Length) < 0) return NULL;
signed_blob *TMD = (signed_blob*) MEM2_alloc(ALIGN32(TMD_Length));
if (!TMD) return NULL;
signed_blob *TMD = (signed_blob*)MEM2_alloc(ALIGN32(TMD_Length));
if (TMD == NULL)
return NULL;
if (ES_GetStoredTMD(TITLE_ID(1, ios), TMD, TMD_Length) < 0)
{
free(TMD);
MEM2_free(TMD);
return NULL;
}
char filepath[ISFS_MAXPATH] ATTRIBUTE_ALIGN(32);
sprintf(filepath, "/title/00000001/%08x/content/%08x.app", ios, *(u8 *)((u32)TMD+0x1E7));
free(TMD);
MEM2_free(TMD);
u32 size = 0;
u8 *buffer = ISFS_GetFile((u8 *) filepath, &size, sizeof(iosinfo_t));
if(buffer == NULL || size == 0) return NULL;
u8 *buffer = ISFS_GetFile((u8 *)filepath, &size, sizeof(iosinfo_t));
if(buffer == NULL || size == 0)
return NULL;
iosinfo_t *iosinfo = (iosinfo_t *) buffer;
iosinfo_t *iosinfo = (iosinfo_t *)buffer;
bool baseMatch = false;
for(u8 i = 0; i < ARRAY_SIZE(allowedBases); i++)
@ -93,10 +95,9 @@ iosinfo_t *cIOSInfo::GetInfo(u8 ios)
|| !baseMatch /* Base */
|| strncasecmp(iosinfo->name, "d2x", 3) != 0) /* Name */
{
free(buffer);
MEM2_free(buffer);
return NULL;
}
free(buffer);
return iosinfo;
}

View File

@ -161,15 +161,19 @@ int get_frag_list(u8 *id, char *path, const u32 hdd_sector_size)
u32 length = strlen(path);
strcpy(fname, path);
if(fname[length-1] > '0' && fname[length-1] < '9') return 0;
int ret, ret_val = -1;
u32 i, j;
if(fname[length-1] > '0' && fname[length-1] < '9')
return 0;
bool isWBFS = wbfs_part_fs != PART_FS_WBFS && strcasestr(strrchr(fname,'.'), ".wbfs") != 0;
struct stat st;
FragList *fs = MEM2_alloc(sizeof(FragList));
FragList *fa = MEM2_alloc(sizeof(FragList));
FragList *fw = MEM2_alloc(sizeof(FragList));
int ret, ret_val = -1;
u32 i, j;
if(fs == NULL || fa == NULL || fw == NULL)
goto out;
frag_init(fa, MAX_FRAG);
@ -238,6 +242,9 @@ int get_frag_list(u8 *id, char *path, const u32 hdd_sector_size)
}
frag_list = MEM2_alloc((sizeof(FragList)+31)&(~31));
if(frag_list == NULL)
goto out;
frag_init(frag_list, MAX_FRAG);
if (isWBFS) // If this is a .wbfs file format, remap.
{
@ -255,23 +262,26 @@ int get_frag_list(u8 *id, char *path, const u32 hdd_sector_size)
goto out;
}
WBFS_CloseDisc(disc); // Close before jumping on fail.
if (frag_remap(frag_list, fw, fa))
if(frag_remap(frag_list, fw, fa))
{
ret_val = -6;
goto out;
}
}
else memcpy(frag_list, fa, sizeof(FragList)); // .iso files do not need a remap, just copy
else
memcpy(frag_list, fa, sizeof(FragList)); // .iso files do not need a remap, just copy
ret_val = 0;
out:
if (ret_val)
if (frag_list != NULL)
MEM2_free(frag_list);
MEM2_free(fs);
MEM2_free(fa);
MEM2_free(fw);
if(fs != NULL)
MEM2_free(fs);
if(fa != NULL)
MEM2_free(fa);
if(fw != NULL)
MEM2_free(fw);
return ret_val;
}

View File

@ -20,7 +20,7 @@ u8 *ISFS_GetFile(u8 *path, u32 *size, s32 length)
{
if (length <= 0) length = stats.file_length;
if (length > 0)
buf = (u8 *) MEM2_alloc(ALIGN32(length));
buf = (u8 *)MEM2_alloc(ALIGN32(length));
if (buf)
{
@ -28,7 +28,7 @@ u8 *ISFS_GetFile(u8 *path, u32 *size, s32 length)
if (ISFS_Read(fd, (char*)buf, length) != length)
{
*size = 0;
free(buf);
MEM2_free(buf);
}
}
}
@ -40,6 +40,5 @@ u8 *ISFS_GetFile(u8 *path, u32 *size, s32 length)
DCFlushRange(buf, *size);
ICInvalidateRange(buf, *size);
}
return buf;
}
}

View File

@ -48,6 +48,9 @@ static u8 *FSTable ALIGNED(32);
void GCDump::__AnalizeMultiDisc()
{
u8 *Buffer = (u8 *)MEM2_alloc(0x10);
if(Buffer == NULL)
return;
MultiGameCnt = 0;
while(1)
{
@ -169,7 +172,9 @@ s32 GCDump::__DiscWriteFile(FILE *f, u64 offset, u32 length, u8 *ReadBuffer)
bool GCDump::__WaitForDisc(u8 dsc, u32 msg)
{
u8 *ReadBuffer = (u8 *)MEM2_alloc(0x440);
if(ReadBuffer == NULL)
return false;
u32 cover = 0;
bool done = false;
while(!done)
@ -200,7 +205,7 @@ bool GCDump::__WaitForDisc(u8 dsc, u32 msg)
MEM2_free(ReadBuffer);
return false;
}
if(Disc_IsGC() == 0)
{
s32 ret = __DiscReadRaw(ReadBuffer, NextOffset, 0x440);
@ -209,10 +214,10 @@ bool GCDump::__WaitForDisc(u8 dsc, u32 msg)
MEM2_free(ReadBuffer);
return false;
}
ID2 = *(vu32*)(ReadBuffer);
Disc2 = *(vu8*)(ReadBuffer+0x06);
if(ID == ID2 && Disc2 == dsc)
{
done = true;
@ -255,6 +260,8 @@ s32 GCDump::DumpGame()
static gc_discHdr gcheader ATTRIBUTE_ALIGN(32);
u8 *ReadBuffer = (u8 *)MEM2_alloc(gc_readsize);
if(ReadBuffer == NULL)
return 0x31100;
gc_done = 0;
gamedone = false;
@ -331,6 +338,8 @@ s32 GCDump::DumpGame()
DiscSize = DataSize + GamePartOffset;
FSTBuffer = (u8 *)MEM2_alloc((FSTSize+31)&(~31));
if(FSTBuffer == NULL)
return 0x31100;
ret = __DiscReadRaw(FSTBuffer, FSTOffset+NextOffset, (FSTSize+31)&(~31));
@ -470,9 +479,8 @@ s32 GCDump::DumpGame()
}
gprintf("Done!! Disc size: %d\n", DiscSize);
}
MEM2_free(FSTBuffer);
if(FSTTotal > FSTSize && !multigamedisc)
{
if(Disc)
@ -512,6 +520,9 @@ s32 GCDump::CheckSpace(u32 *needed, bool comp)
static gc_discHdr gcheader ATTRIBUTE_ALIGN(32);
u8 *ReadBuffer = (u8 *)MEM2_alloc(0x440);
if(ReadBuffer == NULL)
return 1;
u32 size = 0;
bool scnddisc = false;
gamedone = false;
@ -573,6 +584,8 @@ s32 GCDump::CheckSpace(u32 *needed, bool comp)
else
{
u8 *FSTBuffer = (u8 *)MEM2_alloc((FSTSize+31)&(~31));
if(FSTBuffer == NULL)
return 1;
ret = __DiscReadRaw(FSTBuffer, FSTOffset+NextOffset, (FSTSize+31)&(~31));
if(ret > 0)

View File

@ -1872,7 +1872,7 @@ bool CMenu::_loadChannelList(void)
}
else
gprintf("Openning %s failed returning %i\n", filepath, file);
free(sysconf);
MEM2_free(sysconf);
}
sprintf(filepath, "/shared2/menu/FaceLib/RFL_DB.dat");
@ -1890,7 +1890,7 @@ bool CMenu::_loadChannelList(void)
}
else
gprintf("Openning %s failed returning %i\n", filepath, file);
free(meez);
MEM2_free(meez);
}
first = false;
}
@ -2186,6 +2186,9 @@ void CMenu::_loadDefaultFont(bool korean)
// Read content.map from ISFS
u8 *content = ISFS_GetFile((u8 *) "/shared1/content.map", &size, 0);
if(content == NULL)
return;
int items = size / sizeof(map_entry_t);
//gprintf("Open content.map, size %d, items %d\n", size, items);
@ -2203,7 +2206,6 @@ retry:
memcpy(u8_font_filename+9, cm[i].filename, 8);
u8 *u8_font_archive = ISFS_GetFile((u8 *) u8_font_filename, &size, 0);
//gprintf("Opened fontfile: %s: %d bytes\n", u8_font_filename, size);
if (u8_font_archive != NULL)
@ -2216,8 +2218,8 @@ retry:
memcpy(m_base_font.get(), font_file, size);
if(!!m_base_font)
m_base_font_size = size;
MEM2_free(u8_font_archive);
}
free(u8_font_archive);
break;
}
}
@ -2228,7 +2230,7 @@ retry:
goto retry;
}
free(content);
MEM2_free(content);
}
void CMenu::_cleanupDefaultFont()
@ -2301,13 +2303,12 @@ bool CMenu::MIOSisDML()
if(*(u32*)(appfile+i) == 0x44494F53)
{
gprintf("DML is installed as MIOS\n");
free(appfile);
MEM2_free(appfile);
return true;
}
}
MEM2_free(appfile);
}
free(appfile);
gprintf("DML is not installed as MIOS\n");
return false;
}

View File

@ -180,7 +180,7 @@ void CMenu::_textAbout(void)
iosinfo_t * iosInfo = cIOSInfo::GetInfo(mainIOS);
if(iosInfo != NULL)
m_btnMgr.setText(m_aboutLblIOS, wfmt(_fmt("ios", L"IOS%i base %i v%i"), mainIOS, iosInfo->baseios, iosInfo->version), true);
free(iosInfo);
MEM2_free(iosInfo);
if(m_current_view == COVERFLOW_CHANNEL && m_cfg.getInt("NAND", "emulation", 0) > 0)
Nand::Instance()->Enable_Emu();

View File

@ -398,7 +398,7 @@ bool CMenu::_isNetworkAvailable()
if (buf && size > 4)
{
retval = buf[4] > 0; // There is a valid connection defined.
free(buf);
MEM2_free(buf);
}
return retval;
}