added gnutls backend and moved backend code into new files
[ircu2.10.12-pk.git] / ircd / m_clearmode.c
index 8d45c607bc0636f26a21594e6793af7a881d1b3c..81392da469942342c67b2c07f85302629874fd7f 100644 (file)
@@ -177,12 +177,12 @@ do_clearmode(struct Client *cptr, struct Client *sptr, struct Channel *chptr,
    */
   if (del_mode & MODE_BAN) {
     for (link = chptr->banlist; link; link = next) {
+      char *bandup;
       next = link->next;
 
+      DupString(bandup, link->banstr);
       modebuf_mode_string(&mbuf, MODE_DEL | MODE_BAN, /* delete ban */
-                         link->banstr, 1);
-      link->banstr = NULL; /* modebuf_mode_string() gave ownership of
-                            * banstr to mbuf */
+                         bandup, 1);
       free_ban(link);
     }
 
@@ -200,13 +200,13 @@ do_clearmode(struct Client *cptr, struct Client *sptr, struct Channel *chptr,
 
       /* Drop channel operator status */
       if (IsChanOp(member) && del_mode & MODE_CHANOP) {
-       modebuf_mode_client(&mbuf, MODE_DEL | MODE_CHANOP, member->user);
+       modebuf_mode_client(&mbuf, MODE_DEL | MODE_CHANOP, member->user, MAXOPLEVEL + 1);
        member->status &= ~CHFL_CHANOP;
       }
 
       /* Drop voice */
       if (HasVoice(member) && del_mode & MODE_VOICE) {
-       modebuf_mode_client(&mbuf, MODE_DEL | MODE_VOICE, member->user);
+       modebuf_mode_client(&mbuf, MODE_DEL | MODE_VOICE, member->user, MAXOPLEVEL + 1);
        member->status &= ~CHFL_VOICE;
       }
     }