diff options
author | Stijn Buys <ingar@osirion.org> | 2010-10-19 00:23:50 +0000 |
---|---|---|
committer | Stijn Buys <ingar@osirion.org> | 2010-10-19 00:23:50 +0000 |
commit | edb6d6bb6406020d9e49a1898d23e2709c14196d (patch) | |
tree | 385a1d24283e5aac494731c8af49c7ef8a7b2315 /src | |
parent | 7a373c3f1fb8ea9dbef7690154bbe332fc386eca (diff) |
corrects a bullet segfault when deleteing an EntityControlable
Diffstat (limited to 'src')
-rw-r--r-- | src/core/entity.cc | 5 | ||||
-rw-r--r-- | src/game/base/shipmodel.cc | 2 |
2 files changed, 7 insertions, 0 deletions
diff --git a/src/core/entity.cc b/src/core/entity.cc index 1438466..2b37d95 100644 --- a/src/core/entity.cc +++ b/src/core/entity.cc @@ -748,6 +748,11 @@ EntityControlable::~EntityControlable() { if (entity_owner) entity_owner->remove_asset(this); + + if (entity_actioninterface) { + entity_zone->physics()->removeAction(entity_actioninterface); + delete entity_actioninterface; + } } void EntityControlable::set_owner(Player *owner) diff --git a/src/game/base/shipmodel.cc b/src/game/base/shipmodel.cc index 077fd3e..3630d11 100644 --- a/src/game/base/shipmodel.cc +++ b/src/game/base/shipmodel.cc @@ -242,6 +242,7 @@ void ShipModel::buy(core::EntityControlable *buyer, core::Entity *seller) ship->set_state(core::Entity::Docked); ship->get_axis().assign(seller->axis()); ship->get_axis().change_direction(180.0f); + ship->reset(); // transfer inventory for (core::Inventory::Items::iterator it = player->control()->inventory()->items().begin(); @@ -266,6 +267,7 @@ void ShipModel::buy(core::EntityControlable *buyer, core::Entity *seller) msgstr << "^BPurchased " << aux::article(name()) << " for " << price() << " credits"; player->send(msgstr.str()); player->sound("game/buy-ship"); + } } |