From ab2b519c2ecb0c78b62f55a11aa8225d918d1a50 Mon Sep 17 00:00:00 2001 From: Shoghi Cervantes Pueyo Date: Fri, 11 Jan 2013 15:06:24 +0100 Subject: [PATCH] Entity despawning memory leak fixed #45 --- src/API/EntityAPI.php | 7 ++++--- src/API/PlayerAPI.php | 6 +++--- 2 files changed, 7 insertions(+), 6 deletions(-) diff --git a/src/API/EntityAPI.php b/src/API/EntityAPI.php index 56a8adc97..767791975 100644 --- a/src/API/EntityAPI.php +++ b/src/API/EntityAPI.php @@ -92,10 +92,11 @@ class EntityAPI{ public function remove($eid){ if(isset($this->server->entities[$eid])){ - $this->server->query("DELETE FROM entities WHERE EID = ".$eid.";"); - $this->server->api->dhandle("entity.remove", $this->server->entities[$eid]); - $this->server->entities[$eid]->close(); + $entity = $this->server->entities[$eid]; unset($this->server->entities[$eid]); + $this->server->query("DELETE FROM entities WHERE EID = ".$entity->eid.";"); + $this->server->api->dhandle("entity.remove", $entity); + unset($entity); } } } \ No newline at end of file diff --git a/src/API/PlayerAPI.php b/src/API/PlayerAPI.php index 2ea4f5c33..885ad600a 100644 --- a/src/API/PlayerAPI.php +++ b/src/API/PlayerAPI.php @@ -202,11 +202,11 @@ class PlayerAPI{ public function remove($CID){ if(isset($this->server->clients[$CID])){ $player = $this->server->clients[$CID]; - $this->server->api->entity->remove($player->entity->eid); + unset($this->server->clients[$player->CID]); $this->saveOffline($player->username, $player->data); $this->server->query("DELETE FROM players WHERE name = '".$player->username."';"); - unset($this->server->entities[$player->eid]); - unset($this->server->clients[$player->CID]); + unset($player); + $this->server->api->entity->remove($player->eid); } }