diff options
Diffstat (limited to 'src/channels.c')
-rw-r--r-- | src/channels.c | 14 |
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) { |