From 0b7a5c4df83ff1425359f78042c87cfa7c7142bc Mon Sep 17 00:00:00 2001 From: "Anthony J. Thibault" Date: Fri, 15 Apr 2016 15:05:54 -0700 Subject: [PATCH] CharacterController: leak fix for btRigidBody and it's shape --- libraries/physics/src/CharacterController.cpp | 11 +++++++++++ libraries/physics/src/CharacterController.h | 2 +- 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/libraries/physics/src/CharacterController.cpp b/libraries/physics/src/CharacterController.cpp index 9dd40a35a7..f685aee748 100644 --- a/libraries/physics/src/CharacterController.cpp +++ b/libraries/physics/src/CharacterController.cpp @@ -72,6 +72,17 @@ CharacterController::CharacterController() { _pendingFlags = PENDING_FLAG_UPDATE_SHAPE; } +CharacterController::~CharacterController() { + if (_rigidBody) { + btCollisionShape* shape = _rigidBody->getCollisionShape(); + if (shape) { + delete shape; + } + delete _rigidBody; + _rigidBody = nullptr; + } +} + bool CharacterController::needsRemoval() const { return ((_pendingFlags & PENDING_FLAG_REMOVE_FROM_SIMULATION) == PENDING_FLAG_REMOVE_FROM_SIMULATION); } diff --git a/libraries/physics/src/CharacterController.h b/libraries/physics/src/CharacterController.h index d3c7405353..d810e904a7 100644 --- a/libraries/physics/src/CharacterController.h +++ b/libraries/physics/src/CharacterController.h @@ -36,7 +36,7 @@ class btDynamicsWorld; class CharacterController : public btCharacterControllerInterface { public: CharacterController(); - virtual ~CharacterController() {} + virtual ~CharacterController(); bool needsRemoval() const; bool needsAddition() const;