MantisBT - VCMI
View Issue Details
0003154VCMIAI - Battlespublic2020-10-25 06:492020-10-25 06:50
normalminorhave not tried
0003154: Potential race condition locking a weak pointer
There is a potential race condition at lines 52 - 55 in client\battle\CBattleInterface.cpp.

    std::shared_ptr<CCreatureAnimation> animation = anim.lock();
    if (animation->isIdle())

Using a shared pointer obtained by locking a weak pointer without checking the result of the lock could result in a crash if the shared pointer has expired before lock() is called.

When expired() is called before lock() in a multi-threaded environment, it is possible for the shared pointer to expire between expired() and lock(). The safe method is to check the result of lock().
No tags attached.
Issue History
2020-10-25 06:49jamboloNew Issue
2020-10-25 06:50jamboloNote Added: 0007946

2020-10-25 06:50   
Sorry, category is incorrect.