diff --git a/libraries/entities/src/EntityCollisionSystem.cpp b/libraries/entities/src/EntityCollisionSystem.cpp index 7669f73c7d..f0ffbefb46 100644 --- a/libraries/entities/src/EntityCollisionSystem.cpp +++ b/libraries/entities/src/EntityCollisionSystem.cpp @@ -144,6 +144,13 @@ void EntityCollisionSystem::updateCollisionWithEntities(EntityItem* entityA) { penetration = collision->_penetration; entityB = static_cast(collision->_extraData); + // The collision _extraData should be a valid entity, but if for some reason + // it's NULL then continue with a warning. + if (!entityB) { + qDebug() << "UNEXPECTED - we have a collision with missing _extraData. Something went wrong down below!"; + continue; // skip this loop pass if the entity is NULL + } + // don't collide entities with unknown IDs, if (!entityB->isKnownID()) { continue; // skip this loop pass if the entity has an unknown ID diff --git a/libraries/entities/src/EntityTreeElement.cpp b/libraries/entities/src/EntityTreeElement.cpp index 05928990d1..55693b6ff9 100644 --- a/libraries/entities/src/EntityTreeElement.cpp +++ b/libraries/entities/src/EntityTreeElement.cpp @@ -585,8 +585,12 @@ bool EntityTreeElement::findShapeCollisions(const Shape* shape, CollisionList& c if (shape != otherCollisionShape && !ignoreForCollisions) { if (ShapeCollider::collideShapes(shape, otherCollisionShape, collisions)) { CollisionInfo* lastCollision = collisions.getLastCollision(); - lastCollision->_extraData = entity; - atLeastOneCollision = true; + if (lastCollision) { + lastCollision->_extraData = entity; + atLeastOneCollision = true; + } else { + qDebug() << "UNEXPECTED - ShapeCollider::collideShapes() returned true, but no lastCollision."; + } } } ++entityItr;