aboutsummaryrefslogtreecommitdiff
path: root/src/channels.cpp
diff options
context:
space:
mode:
authorGravatar brain2006-08-28 17:55:16 +0000
committerGravatar brain2006-08-28 17:55:16 +0000
commit2deb8b3830b76bbca728b1302d1c2e235b50ed70 (patch)
treed48104a127b80c380b7a2c8ea55fbae983fd1d1d /src/channels.cpp
parentHint of the day: When you have a function that can return a bool, dont mix up... (diff)
YOU KNOW I REALLY HATE IT WHEN CLIENT AUTHORS JUST MAKE ASSUMPTIONS ON THINGS LIKE "oh all prefixes in NAMESX will always be in rank order".
So tell me, zed, where the FUCK does it say that? huh?! git-svn-id: http://svn.inspircd.org/repository/trunk/inspircd@5051 e03df62e-2008-0410-955e-edbf42e46eb7
Diffstat (limited to 'src/channels.cpp')
-rw-r--r--src/channels.cpp10
1 files changed, 9 insertions, 1 deletions
diff --git a/src/channels.cpp b/src/channels.cpp
index 345ec79dd..780251f5f 100644
--- a/src/channels.cpp
+++ b/src/channels.cpp
@@ -921,12 +921,20 @@ const char* chanrec::GetAllPrefixChars(userrec* user)
int ctr = 0;
*prefix = 0;
+ /* Cheat and always put the highest first.
+ * This fixes a NASTY ass-umption in xchat.
+ */
+ const char* first = this->GetPrefixChar(user);
+ if (*first)
+ prefix[ctr++] = *first;
+
prefixlist::iterator n = prefixes.find(user);
if (n != prefixes.end())
{
for (std::vector<prefixtype>::iterator x = n->second.begin(); x != n->second.end(); x++)
{
- prefix[ctr++] = x->first;
+ if (x->first != *first)
+ prefix[ctr++] = x->first;
}
}