summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-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;
}
}