X-Git-Url: https://git.netwichtig.de/gitweb/?a=blobdiff_plain;f=src%2Fusers.cpp;h=f8a95af49a195197042218fb16176f955030c39d;hb=43d1577839df81d3746092f11ebd1280ca2f85c1;hp=43ebfe0a3a2df1d6ac71b648d6afb0d498f7537f;hpb=20680f9c4964a5e10e3649a1e479078ff85c5c85;p=user%2Fhenk%2Fcode%2Finspircd.git diff --git a/src/users.cpp b/src/users.cpp index 43ebfe0a3..f8a95af49 100644 --- a/src/users.cpp +++ b/src/users.cpp @@ -193,11 +193,10 @@ User::User(InspIRCd* Instance, const std::string &uid) : ServerInstance(Instance Visibility = NULL; ip = NULL; MyClass = NULL; + io = NULL; AllowedUserModes = NULL; AllowedChanModes = NULL; AllowedOperCommands = NULL; - memset(AllowedUserModes, 0, sizeof(AllowedUserModes)); - memset(AllowedChanModes, 0, sizeof(AllowedChanModes)); chans.clear(); invites.clear(); memset(modes,0,sizeof(modes)); @@ -235,13 +234,13 @@ User::~User() if (this->AllowedUserModes) { - delete AllowedUserModes; + delete[] AllowedUserModes; AllowedUserModes = NULL; } if (this->AllowedChanModes) { - delete AllowedChanModes; + delete[] AllowedChanModes; AllowedChanModes = NULL; } @@ -729,7 +728,7 @@ void User::Oper(const std::string &opertype, const std::string &opername) { if (*c == '*') { - memset(this->AllowedUserModes, (int)(true), sizeof(this->AllowedUserModes)); + memset(this->AllowedUserModes, (int)(true), 64); } else { @@ -740,7 +739,7 @@ void User::Oper(const std::string &opertype, const std::string &opername) { if (*c == '*') { - memset(this->AllowedChanModes, (int)(true), sizeof(this->AllowedChanModes)); + memset(this->AllowedChanModes, (int)(true), 64); } else { @@ -794,6 +793,17 @@ void User::UnOper() delete AllowedOperCommands; AllowedOperCommands = NULL; } + if (AllowedUserModes) + { + delete[] AllowedUserModes; + AllowedUserModes = NULL; + } + if (AllowedChanModes) + { + delete[] AllowedChanModes; + AllowedChanModes = NULL; + } + } } @@ -1156,14 +1166,14 @@ void User::Write(std::string text) return; } - if (ServerInstance->Config->GetIOHook(this->GetPort())) + if (this->io) { /* XXX: The lack of buffering here is NOT a bug, modules implementing this interface have to * implement their own buffering mechanisms */ try { - ServerInstance->Config->GetIOHook(this->GetPort())->OnRawSocketWrite(this->fd, text.data(), text.length()); + this->io->OnRawSocketWrite(this->fd, text.data(), text.length()); } catch (CoreException& modexcept) {