+2005-04-23 Michael Poole <mdpoole@troilus.org>
+
+ * ircd/channel.c (apply_ban): Consistently free newban->banstr
+ when the function fails.
+ (mode_process_bans): Free banstr for all BAN_DEL bans.
+
+ * ircd/ircd_parser.y: Fix a few memory leaks from previous commit.
+
2005-04-23 Michael Poole <mdpoole@troilus.org>
* include/patchlevel.h: Bump to being a beta.
if (!bmatch(ban, newban)) {
if (do_free)
free_ban(newban);
+ else
+ MyFree(newban->banstr);
return 1;
}
if (!(ban->flags & (BAN_OVERLAPPED|BAN_DEL))) {
}
if (do_free)
free_ban(newban);
+ else
+ MyFree(newban->banstr);
return 4;
}
prevban = ban;
} /* for (prevban = 0, ban = state->chptr->banlist; ban; ban = nextban) { */
+ /* Release all masks of removed bans */
+ for (count = 0; count < state->numbans; ++count) {
+ ban = state->banlist + count;
+ if (ban->flags & BAN_DEL)
+ MyFree(ban->banstr);
+ }
+
if (changed) /* if we changed the ban list, we must invalidate the bans */
mode_ban_invalidate(state->chptr);
}
connectclass: CLASS '=' QSTRING ';'
{
c_class = find_class($3);
+ MyFree($3);
};
connecthost: HOST '=' QSTRING ';'
{
pseudoitem: pseudoname | pseudoprepend | pseudonick | pseudoflags | error;
pseudoname: NAME '=' QSTRING ';'
{
+ MyFree(smap->name);
smap->name = $3;
};
pseudoprepend: PREPEND '=' QSTRING ';'
{
+ MyFree(smap->prepend);
smap->prepend = $3;
};
pseudonick: NICK '=' QSTRING ';'