summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
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)