diff options
author | Peter Powell <petpow@saberuk.com> | 2018-12-12 13:51:26 +0000 |
---|---|---|
committer | Peter Powell <petpow@saberuk.com> | 2018-12-12 14:43:55 +0000 |
commit | 51891f10f2a05e16e45651a669db6680a433bf9b (patch) | |
tree | 795c43424f68ed0f6ea4e718f955667828d1087e /src/users.cpp | |
parent | 372c5c94964263ba6c1f2f44079aac3aff448225 (diff) |
Fix a crash when the core_oper module is not loaded.
Diffstat (limited to 'src/users.cpp')
-rw-r--r-- | src/users.cpp | 15 |
1 files changed, 8 insertions, 7 deletions
diff --git a/src/users.cpp b/src/users.cpp index 8f20b7523..f11a7a380 100644 --- a/src/users.cpp +++ b/src/users.cpp @@ -357,10 +357,12 @@ CullResult FakeUser::cull() void User::Oper(OperInfo* info) { ModeHandler* opermh = ServerInstance->Modes->FindMode('o', MODETYPE_USER); - if (this->IsModeSet(opermh)) - this->UnOper(); - - this->SetMode(opermh, true); + if (opermh) + { + if (this->IsModeSet(opermh)) + this->UnOper(); + this->SetMode(opermh, true); + } this->oper = info; LocalUser* localuser = IS_LOCAL(this); @@ -474,7 +476,8 @@ void User::UnOper() stdalgo::vector::swaperase(ServerInstance->Users->all_opers, this); ModeHandler* opermh = ServerInstance->Modes->FindMode('o', MODETYPE_USER); - this->SetMode(opermh, false); + if (opermh) + this->SetMode(opermh, false); FOREACH_MOD(OnPostDeoper, (this)); } @@ -1161,8 +1164,6 @@ void User::PurgeEmptyChannels() ++i; c->DelUser(this); } - - this->UnOper(); } void User::WriteNotice(const std::string& text) |