فهرست منبع

DRY member destruction (#49)

Bryan Drewery 14 سال پیش
والد
کامیت
30fc50e642
4فایلهای تغییر یافته به همراه9 افزوده شده و 6 حذف شده
  1. 1 3
      src/mod/channels.mod/chanmisc.c
  2. 6 0
      src/mod/irc.mod/chan.c
  3. 1 3
      src/mod/irc.mod/irc.c
  4. 1 0
      src/mod/irc.mod/irc.h

+ 1 - 3
src/mod/channels.mod/chanmisc.c

@@ -996,9 +996,7 @@ void clear_channel(struct chanset_t *chan, bool reset)
     free(chan->channel.topic);
   for (m = chan->channel.member; m; m = m1) {
     m1 = m->next;
-    delete m->floodtime;
-    delete m->floodnum;
-    free(m);
+    delete_member(m);
   }
 
   clear_masklist(chan->channel.ban);

+ 6 - 0
src/mod/irc.mod/chan.c

@@ -285,6 +285,12 @@ static memberlist *newmember(struct chanset_t *chan, char *nick)
   return n;
 }
 
+void delete_member(memberlist* m) {
+  delete m->floodtime;
+  delete m->floodnum;
+  free(m);
+}
+
 static bool member_getuser(memberlist* m, bool act_on_lookup) {
   if (!m) return 0;
   if (!m->user && !m->tried_getuser) {

+ 1 - 3
src/mod/irc.mod/irc.c

@@ -1168,9 +1168,7 @@ killmember(struct chanset_t *chan, char *nick)
     old->next = x->next;
   else
     chan->channel.member = x->next;
-  delete x->floodtime;
-  delete x->floodnum;
-  free(x);
+  delete_member(x);
   chan->channel.members--;
 
   /* The following two errors should NEVER happen. We will try to correct

+ 1 - 0
src/mod/irc.mod/irc.h

@@ -157,6 +157,7 @@ void flush_modes();
 void reset_chan_info(struct chanset_t *);
 char *getnick(const char *, struct chanset_t *);
 void check_shouldjoin(struct chanset_t* chan);
+void delete_member(memberlist* m);
 
 extern int		max_bans, max_exempts, max_invites, max_modes;
 extern bool		use_354, include_lk;