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不需要判断空吗?

posted @ 2016-03-25 17:10  Jon08  阅读(152)  评论(0)    收藏  举报