diff --git a/cocos2dx/include/CCMutableArray.h b/cocos2dx/include/CCMutableArray.h index 68083295b790..4e1e21a9bed1 100644 --- a/cocos2dx/include/CCMutableArray.h +++ b/cocos2dx/include/CCMutableArray.h @@ -369,6 +369,7 @@ class CCMutableArray : public CCObject static CCMutableArray* arrayWithObjects(T pObject1, ...) { CCMutableArray *pArray = new CCMutableArray(); + pArray->autorelease(); va_list params; va_start(params, pObject1); @@ -385,14 +386,22 @@ class CCMutableArray : public CCObject return pArray; } - static CCMutableArray* arrayWithArray(CCMutableArray *pArray) + static CCMutableArray* arrayWithArray(CCMutableArray *pSrcArray) { - if (pArray == NULL) + CCMutableArray *pDestArray = NULL; + + if (pSrcArray == NULL) { - return new CCMutableArray(); + pDestArray = new CCMutableArray(); } - - return pArray->copy(); + else + { + pDestArray = pSrcArray->copy(); + } + + pDestArray->autorelease(); + + return pDestArray; } private: diff --git a/cocos2dx/sprite_nodes/CCAnimation.cpp b/cocos2dx/sprite_nodes/CCAnimation.cpp index e00b5fea548f..6994a69c2424 100644 --- a/cocos2dx/sprite_nodes/CCAnimation.cpp +++ b/cocos2dx/sprite_nodes/CCAnimation.cpp @@ -105,7 +105,8 @@ namespace cocos2d { m_fDelay = delay; m_pobFrames = CCMutableArray::arrayWithArray(pFrames); - + m_pobFrames->retain(); + return true; } @@ -134,6 +135,7 @@ namespace cocos2d m_fDelay = fDelay; m_nameStr = pszName; m_pobFrames = CCMutableArray::arrayWithArray(pFrames); + m_pobFrames->retain(); return true; }