]> git.netwichtig.de Git - user/henk/code/inspircd.git/commitdiff
Fix GetPrefixChar returning empty if a non-prefix mode was used
authordanieldg <danieldg@e03df62e-2008-0410-955e-edbf42e46eb7>
Sun, 13 Sep 2009 20:32:19 +0000 (20:32 +0000)
committerdanieldg <danieldg@e03df62e-2008-0410-955e-edbf42e46eb7>
Sun, 13 Sep 2009 20:32:19 +0000 (20:32 +0000)
git-svn-id: http://svn.inspircd.org/repository/trunk/inspircd@11706 e03df62e-2008-0410-955e-edbf42e46eb7

src/channels.cpp

index 7f2cefd2bb8059d4fb505f2ebc6e15bfb4d35674..0afbc93bbba25c1c9c577a299b94a2bd0c041e0d 100644 (file)
@@ -914,7 +914,7 @@ const char* Channel::GetPrefixChar(User *user)
                {
                        char mchar = m->second->modes[i];
                        ModeHandler* mh = ServerInstance->Modes->FindMode(mchar, MODETYPE_CHANNEL);
-                       if (mh && mh->GetPrefixRank() > bestrank)
+                       if (mh && mh->GetPrefixRank() > bestrank && mh->GetPrefix())
                        {
                                bestrank = mh->GetPrefixRank();
                                pf[0] = mh->GetPrefix();
@@ -960,20 +960,10 @@ const char* Channel::GetAllPrefixChars(User* user)
 
 unsigned int Channel::GetPrefixValue(User* user)
 {
-       unsigned int bestrank = 0;
-
        UserMembIter m = userlist.find(user);
-       if (m != userlist.end())
-       {
-               for(unsigned int i=0; i < m->second->modes.length(); i++)
-               {
-                       char mchar = m->second->modes[i];
-                       ModeHandler* mh = ServerInstance->Modes->FindMode(mchar, MODETYPE_CHANNEL);
-                       if (mh && mh->GetPrefixRank() > bestrank)
-                               bestrank = mh->GetPrefixRank();
-               }
-       }
-       return bestrank;
+       if (m == userlist.end())
+               return 0;
+       return m->second->getRank();
 }
 
 void Channel::SetPrefix(User* user, char prefix, bool adding)