diff --git a/server/gameserver/creature.cc b/server/gameserver/creature.cc index 16ae1559..52a5d38b 100644 --- a/server/gameserver/creature.cc +++ b/server/gameserver/creature.cc @@ -89,12 +89,12 @@ Creature::~Creature() } } slave_heros_.clear(); - xtimer_attacher.ClearTimerList(); ClearBuffList(); skill_hash_.clear(); ClearPassiveSkill(); trigger_->UnInit(); room->grid_service->RemoveCreature(this); + xtimer_attacher.ClearTimerList(); } bool Creature::HasBuffEffect(int buff_effect_id) diff --git a/server/gameserver/trigger.cc b/server/gameserver/trigger.cc index bba1d2ec..0b1d87ad 100644 --- a/server/gameserver/trigger.cc +++ b/server/gameserver/trigger.cc @@ -39,6 +39,11 @@ void Trigger::UnInit() EventHandler, entry); list_del_init(&e->entry); +#ifdef MYDEBUG + if (e->holder.use_count() > 1) { + A8_ABORT(); + } +#endif e->holder = nullptr; } } @@ -451,6 +456,11 @@ void Trigger::RemoveBuffs(int cond, const std::vector& buffids) std::weak_ptr Trigger::AddListener(int event_id, a8::CommonCbProc cb) { + #ifdef MYDEBUG + if (owner_->room->IsDestorying()) { + A8_ABORT(); + } + #endif auto itr = listeners_hash_.find(event_id); if (itr == listeners_hash_.end()) { listeners_hash_[event_id] = list_head();