From a49cd409525d9025a1de54e5655e7aa41138607c Mon Sep 17 00:00:00 2001 From: vspader Date: Sat, 28 Feb 2009 23:13:35 -0800 Subject: [PATCH] Fixed memory leaks. --- Frameworks/AudioOverload/aosdk/corlett.c | 4 ++++ Frameworks/AudioOverload/aosdk/eng_psf/eng_psf.c | 3 ++- Frameworks/AudioOverload/aosdk/eng_psf/eng_psf2.c | 2 ++ Plugins/AudioOverload/AODecoder.m | 14 +++++++++----- 4 files changed, 17 insertions(+), 6 deletions(-) diff --git a/Frameworks/AudioOverload/aosdk/corlett.c b/Frameworks/AudioOverload/aosdk/corlett.c index 653efc1fa..b7a68b68a 100644 --- a/Frameworks/AudioOverload/aosdk/corlett.c +++ b/Frameworks/AudioOverload/aosdk/corlett.c @@ -115,6 +115,10 @@ int corlett_decode(uint8 *input, uint32 input_len, uint8 **output, uint64 *size, // Decompress data if any decomp_dat = malloc(DECOMP_MAX_SIZE); + if (NULL == decomp_dat) { + return AO_FAIL; + } + decomp_length = DECOMP_MAX_SIZE; if (uncompress(decomp_dat, &decomp_length, (unsigned char *)&buf[4+(res_area/4)], comp_length) != Z_OK) { diff --git a/Frameworks/AudioOverload/aosdk/eng_psf/eng_psf.c b/Frameworks/AudioOverload/aosdk/eng_psf/eng_psf.c index 604c424bd..bf9944e5d 100644 --- a/Frameworks/AudioOverload/aosdk/eng_psf/eng_psf.c +++ b/Frameworks/AudioOverload/aosdk/eng_psf/eng_psf.c @@ -254,11 +254,12 @@ int32 psf_start(uint8 *buffer, uint32 length) // Dispose the corlett structure for the lib - we don't use it free(lib); + free(alib_decoded); } } free(file); -// free(lib_decoded); + free(lib_decoded); // Finally, set psfby tag strcpy(psfby, "n/a"); diff --git a/Frameworks/AudioOverload/aosdk/eng_psf/eng_psf2.c b/Frameworks/AudioOverload/aosdk/eng_psf/eng_psf2.c index 444ee3368..d7c136009 100644 --- a/Frameworks/AudioOverload/aosdk/eng_psf/eng_psf2.c +++ b/Frameworks/AudioOverload/aosdk/eng_psf/eng_psf2.c @@ -507,6 +507,8 @@ int32 psf2_start(uint8 *buffer, uint32 length) return AO_FAIL; } + free(lib_raw_file); + #if DEBUG_LOADER printf("Lib FS section: size %x bytes\n", lib->res_size); #endif diff --git a/Plugins/AudioOverload/AODecoder.m b/Plugins/AudioOverload/AODecoder.m index bf649c947..4b97fa3f1 100644 --- a/Plugins/AudioOverload/AODecoder.m +++ b/Plugins/AudioOverload/AODecoder.m @@ -209,16 +209,14 @@ int ao_get_lib(char *fn, uint8 **buf, uint64 *length) { NSLog(@"ERROR: File is unknown, signature bytes are %02x %02x %02x %02x\n", buffer[0], buffer[1], buffer[2], buffer[3]); - free(buffer); return NO; } if ((*types[type].start)(buffer, size) != AO_SUCCESS) { - free(buffer); NSLog(@"ERROR: Engine rejected file!\n"); - + return NO; } @@ -235,7 +233,9 @@ int ao_get_lib(char *fn, uint8 **buf, uint64 *length) [globalLock lock]; BOOL ret = [self openUnderLock:source]; - + if (!ret) { + [self close]; + } return ret; } @@ -257,7 +257,10 @@ int ao_get_lib(char *fn, uint8 **buf, uint64 *length) - (void)closeUnderLock { (*types[type ].stop)(); - free(buffer); + if (NULL != buffer) { + free(buffer); + buffer = NULL; + } [currentSource release]; currentSource = nil; @@ -307,6 +310,7 @@ int ao_get_lib(char *fn, uint8 **buf, uint64 *length) NSDictionary *metadata = [decoder metadata]; [decoder closeUnderLock]; + [decoder release]; [globalLock unlock];