summaryrefslogtreecommitdiff
path: root/src/channels.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/channels.c')
-rw-r--r--src/channels.c14
1 files changed, 7 insertions, 7 deletions
diff --git a/src/channels.c b/src/channels.c
index 594388c2f..564989bd3 100644
--- a/src/channels.c
+++ b/src/channels.c
@@ -978,25 +978,25 @@ char *chan_get_modes(Channel * chan, int complete, int plus)
char params[BUFSIZE];
char *end = res, *value, *pend = params, *pend2 = params;
std::string param;
- ChannelMode *cm;
- ChannelModeParam *cmp;
- std::map<char, ChannelMode *>::iterator it;
if (chan->HasModes())
{
- for (it = ModeManager::ChannelModesByChar.begin(); it != ModeManager::ChannelModesByChar.end(); ++it)
+ for (std::list<Mode *>::iterator it = ModeManager::Modes.begin(); it != ModeManager::Modes.end(); ++it)
{
- cm = it->second;
+ if ((*it)->Class != MC_CHANNEL)
+ continue;
+
+ ChannelMode *cm = dynamic_cast<ChannelMode *>(*it);
if (chan->HasMode(cm->Name))
{
- *end++ = it->first;
+ *end++ = cm->ModeChar;
if (complete)
{
if (cm->Type == MODE_PARAM)
{
- cmp = dynamic_cast<ChannelModeParam *>(cm);
+ ChannelModeParam *cmp = dynamic_cast<ChannelModeParam *>(cm);
if (plus || !cmp->MinusNoArg)
{