more memory leak fixes in demo and btSimpleBroadphase.

- deleting object (END key) needs to release
- call destructor of pair cache
This commit is contained in:
ejcoumans
2007-10-31 08:17:48 +00:00
parent a101719687
commit a146bbc293
3 changed files with 11 additions and 1 deletions

View File

@@ -417,7 +417,16 @@ void DemoApplication::specialKeyboard(int key, int x, int y)
if (numObj) if (numObj)
{ {
btCollisionObject* obj = getDynamicsWorld()->getCollisionObjectArray()[numObj-1]; btCollisionObject* obj = getDynamicsWorld()->getCollisionObjectArray()[numObj-1];
getDynamicsWorld()->removeCollisionObject(obj); getDynamicsWorld()->removeCollisionObject(obj);
btRigidBody* body = btRigidBody::upcast(obj);
if (body && body->getMotionState())
{
delete body->getMotionState();
}
delete obj;
} }
break; break;
} }

View File

@@ -77,6 +77,7 @@ btSimpleBroadphase::~btSimpleBroadphase()
if (m_ownsPairCache) if (m_ownsPairCache)
{ {
m_pairCache->~btOverlappingPairCache();
btAlignedFree(m_pairCache); btAlignedFree(m_pairCache);
} }
} }

View File

@@ -77,7 +77,7 @@ protected:
void freeHandle(btSimpleBroadphaseProxy* proxy) void freeHandle(btSimpleBroadphaseProxy* proxy)
{ {
int handle = int(proxy-m_pHandles); int handle = int(proxy-m_pHandles);
btAssert(handle > 0 && handle < m_maxHandles); btAssert(handle >= 0 && handle < m_maxHandles);
proxy->SetNextFree(m_firstFreeHandle); proxy->SetNextFree(m_firstFreeHandle);
m_firstFreeHandle = handle; m_firstFreeHandle = handle;