ccArrayRemoveAllObjects
近期项目在bugly上捕获若干错误,详情如下:
SIGSEGV(SEGV_MAPERR)
|
#00 pc 00a89062 /data/app-lib/com.bilibili.meng.uc-2/libcocos2dcpp.so (cocos2d::ActionManager::removeAllActionsFromTarget(cocos2d::Node*) +09) [armeabi-v7a] |
|
#01 pc 00a54627 /data/app-lib/com.bilibili.meng.uc-2/libcocos2dcpp.so (spritebuilder::CCBAnimationManager::~CCBAnimationManager() +18) [armeabi-v7a] |
在项目中找到代码,详情如下
void ActionManager::removeAllActionsFromTarget(Node *target)
{
// explicit null handling
if (target == nullptr)
{
return;
}
tHashElement *element = nullptr;
HASH_FIND_PTR(_targets, &target, element);
if (element)
{
if (ccArrayContainsObject(element->actions, element->currentAction) && (! element->currentActionSalvaged))
{
element->currentAction->retain();
element->currentActionSalvaged = true;
}
ccArrayRemoveAllObjects(element->actions);
if (_currentTarget == element)
{
_currentTargetSalvaged = true;
}
else
{
deleteHashElement(element);
}
}
else
{
// CCLOG("cocos2d: removeAllActionsFromTarget: Target not found");
}
}
element->actions不需要判断空吗?
浙公网安备 33010602011771号