diff --git a/Demos/OpenGL/DemoApplication.cpp b/Demos/OpenGL/DemoApplication.cpp index 4e7f39ae9..3f3757371 100644 --- a/Demos/OpenGL/DemoApplication.cpp +++ b/Demos/OpenGL/DemoApplication.cpp @@ -417,7 +417,16 @@ void DemoApplication::specialKeyboard(int key, int x, int y) if (numObj) { btCollisionObject* obj = getDynamicsWorld()->getCollisionObjectArray()[numObj-1]; + getDynamicsWorld()->removeCollisionObject(obj); + btRigidBody* body = btRigidBody::upcast(obj); + if (body && body->getMotionState()) + { + delete body->getMotionState(); + } + delete obj; + + } break; } diff --git a/src/BulletCollision/BroadphaseCollision/btSimpleBroadphase.cpp b/src/BulletCollision/BroadphaseCollision/btSimpleBroadphase.cpp index ff753ae5f..e0bb09929 100644 --- a/src/BulletCollision/BroadphaseCollision/btSimpleBroadphase.cpp +++ b/src/BulletCollision/BroadphaseCollision/btSimpleBroadphase.cpp @@ -77,6 +77,7 @@ btSimpleBroadphase::~btSimpleBroadphase() if (m_ownsPairCache) { + m_pairCache->~btOverlappingPairCache(); btAlignedFree(m_pairCache); } } diff --git a/src/BulletCollision/BroadphaseCollision/btSimpleBroadphase.h b/src/BulletCollision/BroadphaseCollision/btSimpleBroadphase.h index d40cd5561..ceb09ac8c 100644 --- a/src/BulletCollision/BroadphaseCollision/btSimpleBroadphase.h +++ b/src/BulletCollision/BroadphaseCollision/btSimpleBroadphase.h @@ -77,7 +77,7 @@ protected: void freeHandle(btSimpleBroadphaseProxy* proxy) { int handle = int(proxy-m_pHandles); - btAssert(handle > 0 && handle < m_maxHandles); + btAssert(handle >= 0 && handle < m_maxHandles); proxy->SetNextFree(m_firstFreeHandle); m_firstFreeHandle = handle;