Merge pull request #14068 from hyperlogic/bug-fix/bad-avatar-pointer-static-cast

Fix for bad static_pointer_cast on exit.
This commit is contained in:
John Conklin II 2018-10-02 11:31:47 -07:00 committed by GitHub
commit 898ba20f1c
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -505,14 +505,16 @@ void AvatarManager::clearOtherAvatars() {
void AvatarManager::deleteAllAvatars() {
assert(_avatarsToChangeInPhysics.empty());
QWriteLocker locker(&_hashLock);
AvatarHash::iterator avatarIterator = _avatarHash.begin();
QReadLocker locker(&_hashLock);
AvatarHash::iterator avatarIterator = _avatarHash.begin();
while (avatarIterator != _avatarHash.end()) {
auto avatar = std::static_pointer_cast<OtherAvatar>(avatarIterator.value());
auto avatar = std::static_pointer_cast<Avatar>(avatarIterator.value());
avatarIterator = _avatarHash.erase(avatarIterator);
avatar->die();
assert(!avatar->_motionState);
if (avatar != _myAvatar) {
auto otherAvatar = std::static_pointer_cast<OtherAvatar>(avatar);
assert(!otherAvatar->_motionState);
}
}
}