mlen = strlen(self->name) + strlen(from->nick) + 12 + strlen(who->nick);
len = 0;
*buf = '\0';
- for (i = 0; i < who->channels.used; i++)
+ for (i = who->channels.used; i > 0; )
{
- mn = who->channels.list[i];
+ mn = who->channels.list[--i];
if (!IsOper(from) && (mn->channel->modes & (MODE_PRIVATE | MODE_SECRET)) && !GetUserMode(mn->channel, from))
continue;
case '-': add = 0; break;
case 'o':
do_user_mode(FLAGS_OPER);
- if (add) {
+ if (!add) {
+ userList_remove(&curr_opers, user);
+ } else if (!userList_contains(&curr_opers, user)) {
userList_append(&curr_opers, user);
call_oper_funcs(user);
- } else {
- userList_remove(&curr_opers, user);
}
break;
case 'i': do_user_mode(FLAGS_INVISIBLE);