summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorSadie Powell <sadie@witchery.services>2024-06-03 15:51:29 +0100
committerSadie Powell <sadie@witchery.services>2024-06-03 16:04:53 +0100
commite71a9e289441fd78ffa1bd3d8c20ea2cb8542426 (patch)
tree95def1c721754ed095e2ca9654892343f611a953 /src
parentf80bdf06bace6d3e5c50ed982fe1c14451ae4518 (diff)
Avoid NickAlias lookups by storing a pointer in the NickCore.
Diffstat (limited to 'src')
-rw-r--r--src/nickalias.cpp2
-rw-r--r--src/nickcore.cpp3
-rw-r--r--src/users.cpp5
3 files changed, 9 insertions, 1 deletions
diff --git a/src/nickalias.cpp b/src/nickalias.cpp
index cfcd13381..f7c6a79e2 100644
--- a/src/nickalias.cpp
+++ b/src/nickalias.cpp
@@ -31,6 +31,8 @@ NickAlias::NickAlias(const Anope::string &nickname, NickCore *nickcore)
throw CoreException("Empty nickcore passed to NickAlias constructor");
nickcore->aliases->push_back(this);
+ if (this->nick.equals_ci(nickcore->display))
+ nickcore->na = this;
if (!NickAliasList->insert_or_assign(this->nick, this).second)
Log(LOG_DEBUG) << "Duplicate nick " << this->nick << " in NickAlias table";
diff --git a/src/nickcore.cpp b/src/nickcore.cpp
index 64aa4f504..0fa721f8d 100644
--- a/src/nickcore.cpp
+++ b/src/nickcore.cpp
@@ -149,7 +149,7 @@ Serializable *NickCore::Unserialize(Serializable *obj, Serialize::Data &data)
return nc;
}
-void NickCore::SetDisplay(const NickAlias *na)
+void NickCore::SetDisplay(NickAlias *na)
{
if (na->nc != this || na->nick == this->display)
return;
@@ -164,6 +164,7 @@ void NickCore::SetDisplay(const NickAlias *na)
NickCoreList->erase(this->display);
this->display = na->nick;
+ this->na = na;
(*NickCoreList)[this->display] = this;
}
diff --git a/src/users.cpp b/src/users.cpp
index 8273e888d..9462881f1 100644
--- a/src/users.cpp
+++ b/src/users.cpp
@@ -430,6 +430,11 @@ NickCore *User::Account() const
return this->nc;
}
+NickAlias *User::AccountNick() const
+{
+ return this->nc ? this->nc->na : nullptr;
+}
+
bool User::IsIdentified(bool check_nick) const
{
if (check_nick && this->nc)