From c683d3d83414ce0f352dbb421a027615366c71e1 Mon Sep 17 00:00:00 2001 From: David Rose Date: Sat, 31 May 2003 00:16:34 +0000 Subject: [PATCH] collision handler pointer may have already been removed --- panda/src/collide/collisionTraverser.cxx | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/panda/src/collide/collisionTraverser.cxx b/panda/src/collide/collisionTraverser.cxx index 229f1a5767..535bb23df1 100644 --- a/panda/src/collide/collisionTraverser.cxx +++ b/panda/src/collide/collisionTraverser.cxx @@ -142,11 +142,14 @@ remove_collider(CollisionNode *node) { // Update the set of handlers. Handlers::iterator hi = _handlers.find(handler); - nassertr(hi != _handlers.end(), false); - (*hi).second--; - nassertr((*hi).second >= 0, false); - if ((*hi).second == 0) { - _handlers.erase(hi); + // It's possible that the handler doesn't exist in the list (it may + // have removed itself if it detected some internal error). + if (hi != _handlers.end()) { + (*hi).second--; + nassertr((*hi).second >= 0, false); + if ((*hi).second == 0) { + _handlers.erase(hi); + } } _colliders.erase(ci);