Fixed memory leaks in CCString and CCDictionary, Updated CCFileUtils_ios.mm.Remove inline prefix for some member function of CCString, so that make it compiled successfully on android and ios.

This commit is contained in:
James Chen 2012-04-16 10:57:37 +08:00
parent d01f1277af
commit 9ace0d2fdc
7 changed files with 43 additions and 29 deletions

View File

@ -1 +1 @@
2d9494d763406ba9945e40f011820005d14b92eb
ba02d3744870cd69d88ef40bfe303f99d85313a6

View File

@ -293,7 +293,9 @@ CCDictionary* CCDictionary::dictionaryWithContentsOfFileThreadSafe(const char *p
CCDictionary* CCDictionary::dictionaryWithContentsOfFile(const char *pFileName)
{
return dictionaryWithContentsOfFileThreadSafe(pFileName);
CCDictionary* pRet = dictionaryWithContentsOfFileThreadSafe(pFileName);
pRet->autorelease();
return pRet;
}
NS_CC_END

View File

@ -180,8 +180,11 @@ CCString* CCString::stringWithContentsOfFile(const char* pszFileName)
{
unsigned long size = 0;
unsigned char* pData = 0;
CCString* pRet = NULL;
pData = CCFileUtils::getFileData(pszFileName, "rb", &size);
return stringWithData(pData, size);
pRet = stringWithData(pData, size);
CC_SAFE_DELETE_ARRAY(pData);
return pRet;
}
NS_CC_END

View File

@ -39,48 +39,61 @@ public:
virtual ~CCString();
/** override assignment operator */
/* override assignment operator */
CCString& operator= (const CCString& other);
/** init a string with format, it's similar with the c function 'sprintf' */
bool initWithFormat(const char* format, ...);
/** convert to int value */
inline int intValue() const;
int intValue() const;
/** convert to unsigned int value */
inline unsigned int uintValue() const;
unsigned int uintValue() const;
/** convert to float value */
inline float floatValue() const;
float floatValue() const;
/** convert to double value */
inline double doubleValue() const;
double doubleValue() const;
/** convert to bool value */
inline bool boolValue() const;
bool boolValue() const;
/** get the C string */
inline const char* getCString() const;
const char* getCString() const;
/** get the length of string */
inline unsigned int length() const;
unsigned int length() const;
/** override functions */
/* override functions */
virtual CCObject* copyWithZone(CCZone* pZone);
virtual bool isEqual(const CCObject* pObject);
/** static funcitons */
/** create a string with c string */
/* static funcitons */
/** create a string with c string
* @return A CCString pointer which is an autorelease object pointer,
* it means that you needn't do a release operation unless you retain it.
*/
static CCString* stringWithCString(const char* pStr);
/** create a string with format, it's similar with the c function 'sprintf' */
/** create a string with format, it's similar with the c function 'sprintf', the default buffer size is (1024*100) bytes,
* if you want to change it, you should modify the kMaxStringLen macro in CCString.cpp file.
* @return A CCString pointer which is an autorelease object pointer,
* it means that you needn't do a release operation unless you retain it.
*/
static CCString* stringWithFormat(const char* format, ...);
/** create a string with binary data */
/** create a string with binary data
* @return A CCString pointer which is an autorelease object pointer,
* it means that you needn't do a release operation unless you retain it.
*/
static CCString* stringWithData(unsigned char* pData, unsigned long nLen);
/** create a string with a file */
/** create a string with a file,
* @return A CCString pointer which is an autorelease object pointer,
* it means that you needn't do a release operation unless you retain it.
*/
static CCString* stringWithContentsOfFile(const char* pszFileName);
private:

View File

@ -34,6 +34,7 @@ THE SOFTWARE.
#include "CCFileUtils.h"
#include "CCDirector.h"
#include "CCSAXParser.h"
#include "CCDictionary.h"
#include "support/zip_support/unzip.h"
#define MAX_PATH 260
@ -415,17 +416,9 @@ namespace cocos2d {
return pRet->m_sString.c_str();
}
CCDictionary *CCFileUtils::dictionaryWithContentsOfFile(const char *pFileName)
CCDictionary* ccFileUtils_dictionaryWithContentsOfFileThreadSafe(const char *pFileName)
{
CCDictionary *ret = dictionaryWithContentsOfFileThreadSafe(pFileName);
ret->autorelease();
return ret;
}
CCDictionary *CCFileUtils::dictionaryWithContentsOfFileThreadSafe(const char *pFileName)
{
const char* pszFullPath = fullPathFromRelativePath(pFileName);
const char* pszFullPath = CCFileUtils::fullPathFromRelativePath(pFileName);
NSString* pPath = [NSString stringWithUTF8String:pszFullPath];
NSDictionary* pDict = [NSDictionary dictionaryWithContentsOfFile:pPath];

View File

@ -1 +1 @@
80c6fdfc6a77f7b0475ad0c3edbc6097d604d506
b9cda1260ba870cf512eba65876376a4b0f6c7df

View File

@ -187,6 +187,9 @@ void TestController::menuCallback(CCObject * pSender)
void TestController::closeCallback(CCObject * pSender)
{
CCDirector::sharedDirector()->end();
#if (CC_TARGET_PLATFORM == CC_PLATFORM_IOS)
exit(0);
#endif
}
void TestController::ccTouchesBegan(CCSet *pTouches, CCEvent *pEvent)