From 16e667a2cecf9492954333fc7949b6636072f941 Mon Sep 17 00:00:00 2001 From: cyberbotx Date: Sat, 22 Nov 2008 01:11:19 +0000 Subject: Replaced most uses of smalloc and scalloc with new, replaced most uses of free with delete. NOTE: This build is unstable due to lack of memory zeroing, this will be addresses in a future commit. git-svn-id: http://anope.svn.sourceforge.net/svnroot/anope/trunk@1783 5417fbe8-f217-4b02-8779-1006273d7864 --- src/actions.c | 2 +- src/base64.c | 2 +- src/bots.cpp | 10 +-- src/botserv.c | 32 ++++---- src/channels.c | 95 +++++++++++----------- src/chanserv.c | 101 +++++++++++++----------- src/core/bs_badwords.c | 8 +- src/core/bs_bot.c | 68 ++++++++-------- src/core/bs_fantasy_kick.c | 8 +- src/core/bs_fantasy_kickban.c | 4 +- src/core/bs_fantasy_seen.c | 2 +- src/core/cs_akick.c | 50 ++++++------ src/core/cs_clear.c | 6 +- src/core/cs_identify.c | 6 +- src/core/cs_list.c | 14 ++-- src/core/cs_logout.c | 6 +- src/core/cs_register.c | 2 +- src/core/cs_set.c | 10 +-- src/core/cs_suspend.c | 4 +- src/core/cs_topic.c | 4 +- src/core/hs_group.c | 10 +-- src/core/hs_list.c | 8 +- src/core/hs_set.c | 54 ++++++------- src/core/hs_setall.c | 54 ++++++------- src/core/ms_del.c | 6 +- src/core/ns_access.c | 6 +- src/core/ns_drop.c | 2 +- src/core/ns_forbid.c | 2 +- src/core/ns_group.c | 12 ++- src/core/ns_identify.c | 14 ++-- src/core/ns_list.c | 10 +-- src/core/ns_register.c | 17 ++-- src/core/ns_saset.c | 6 +- src/core/ns_set.c | 10 +-- src/core/ns_update.c | 6 +- src/core/os_akill.c | 4 +- src/core/os_chankill.c | 2 +- src/core/os_kick.c | 6 +- src/core/os_logonnews.c | 10 +-- src/core/os_opernews.c | 8 +- src/core/os_quit.c | 6 +- src/core/os_reload.c | 6 +- src/core/os_restart.c | 6 +- src/core/os_shutdown.c | 6 +- src/datafiles.c | 20 ++--- src/events.c | 18 ++--- src/hostserv.c | 46 ++++++----- src/init.c | 2 +- src/language.c | 28 +++---- src/mail.c | 14 ++-- src/main.c | 20 ++--- src/memory.c | 15 ++-- src/memoserv.c | 2 +- src/misc.c | 22 +++--- src/module.cpp | 6 +- src/modules.c | 58 ++++++-------- src/modules/bs_fantasy_unban.c | 6 +- src/modules/cs_appendtopic.c | 6 +- src/modules/cs_enforce.c | 4 +- src/modules/cs_tban.c | 6 +- src/modules/hs_request.c | 60 +++++++------- src/modules/ns_maxemail.c | 8 +- src/modules/ns_noop_convert.c | 6 +- src/modules/os_ignore_db.c | 56 ++++++------- src/modules/os_info.c | 45 +++++------ src/news.c | 2 +- src/nickserv.c | 70 ++++++++--------- src/operserv.c | 70 ++++++++--------- src/process.c | 175 ++++++++++++++++------------------------- src/protocol/inspircd11.c | 3 +- src/protocol/inspircd12.cpp | 5 +- src/protocol/ratbox.c | 18 ++--- src/protocol/unreal32.c | 6 +- src/servers.c | 19 +++-- src/sessions.c | 18 ++--- src/timeout.c | 6 +- src/users.c | 68 ++++++++-------- 77 files changed, 783 insertions(+), 830 deletions(-) (limited to 'src') diff --git a/src/actions.c b/src/actions.c index c455dfa61..9d1a415d1 100644 --- a/src/actions.c +++ b/src/actions.c @@ -194,7 +194,7 @@ void common_unban(ChannelInfo * ci, char *nick) } /* host_resolve() sstrdup us this info so we gotta free it */ if (host) { - free(host); + delete [] host; } } diff --git a/src/base64.c b/src/base64.c index 5a11b9237..87212fa00 100644 --- a/src/base64.c +++ b/src/base64.c @@ -405,6 +405,6 @@ long base64dects(const char *ts) return strtoul(ts, NULL, 10); } value = base64dec(token); - Anope_Free(token); + delete [] token; return value; } diff --git a/src/bots.cpp b/src/bots.cpp index a86f37076..90987f279 100644 --- a/src/bots.cpp +++ b/src/bots.cpp @@ -51,10 +51,10 @@ BotInfo::~BotInfo() nbots--; - free(this->nick); - free(this->user); - free(this->host); - free(this->real); + delete [] this->nick; + delete [] this->user; + delete [] this->host; + delete [] this->real; } @@ -68,7 +68,7 @@ void BotInfo::ChangeNick(const char *newnick) botlists[tolower(*this->nick)] = this->next; if (this->nick) - free(this->nick); + delete [] this->nick; this->nick = sstrdup(newnick); insert_bot(this); diff --git a/src/botserv.c b/src/botserv.c index 62b19fb1a..371294c8c 100644 --- a/src/botserv.c +++ b/src/botserv.c @@ -266,7 +266,7 @@ void botchanmsgs(User * u, ChannelInfo * ci, char *buf) nbuf + strlen(nbuf) - len)))) { mustkick = 1; } else { - char *wordbuf = (char *)scalloc(len + 3, 1); + char *wordbuf = new char[len + 3]; wordbuf[0] = ' '; wordbuf[len + 1] = ' '; @@ -281,7 +281,7 @@ void botchanmsgs(User * u, ChannelInfo * ci, char *buf) } /* free previous (sc)allocated memory (#850) */ - free(wordbuf); + delete [] wordbuf; } } } else if (bw->type == BW_START) { @@ -293,7 +293,7 @@ void botchanmsgs(User * u, ChannelInfo * ci, char *buf) && (!strnicmp(nbuf, bw->word, len)))) { mustkick = 1; } else { - char *wordbuf = (char *)scalloc(len + 2, 1); + char *wordbuf = new char[len + 2]; memcpy(wordbuf + 1, bw->word, len); wordbuf[0] = ' '; @@ -304,7 +304,7 @@ void botchanmsgs(User * u, ChannelInfo * ci, char *buf) && (stristr(nbuf, wordbuf)))) mustkick = 1; - free(wordbuf); + delete [] wordbuf; } } else if (bw->type == BW_END) { int len = strlen(bw->word); @@ -320,7 +320,7 @@ void botchanmsgs(User * u, ChannelInfo * ci, char *buf) len)))) { mustkick = 1; } else { - char *wordbuf = (char *)scalloc(len + 2, 1); + char *wordbuf = new char[len + 2]; memcpy(wordbuf, bw->word, len); wordbuf[len] = ' '; @@ -331,7 +331,7 @@ void botchanmsgs(User * u, ChannelInfo * ci, char *buf) && (stristr(nbuf, wordbuf)))) mustkick = 1; - free(wordbuf); + delete [] wordbuf; } } @@ -343,14 +343,14 @@ void botchanmsgs(User * u, ChannelInfo * ci, char *buf) bot_kick(ci, u, BOT_REASON_BADWORD, bw->word); /* free the normalized buffer before return (#850) */ - Anope_Free(nbuf); + delete [] nbuf; return; } } /* Free the normalized buffer */ - Anope_Free(nbuf); + delete [] nbuf; } /* Flood kicker */ @@ -382,7 +382,7 @@ void botchanmsgs(User * u, ChannelInfo * ci, char *buf) return; } if (ud->lastline && stricmp(ud->lastline, buf)) { - free(ud->lastline); + delete [] ud->lastline; ud->lastline = sstrdup(buf); ud->times = 0; } else { @@ -464,7 +464,7 @@ void load_bs_dbase(void) SAFE(read_string(&s, f)); bi = new BotInfo(s); - free(s); + delete [] s; SAFE(read_string(&bi->user, f)); SAFE(read_string(&bi->host, f)); SAFE(read_string(&bi->real, f)); @@ -604,9 +604,9 @@ static BanData *get_ban_data(Channel * c, User * u) else c->bd = bd->next; if (bd->mask) - free(bd->mask); + delete [] bd->mask; next = bd->next; - free(bd); + delete bd; continue; } if (!stricmp(bd->mask, mask)) { @@ -617,7 +617,7 @@ static BanData *get_ban_data(Channel * c, User * u) } /* If we fall here it is that we haven't found the record */ - bd = (BanData *)scalloc(sizeof(BanData), 1); + bd = new BanData; bd->mask = sstrdup(mask); bd->last_use = now; @@ -651,7 +651,7 @@ static UserData *get_user_data(Channel * c, User * u) /* Checks whether data is obsolete */ if (now - user->ud->last_use > BSKeepData) { if (user->ud->lastline) - free(user->ud->lastline); + delete [] user->ud->lastline; /* We should not free and realloc, but reset to 0 instead. */ memset(user->ud, 0, sizeof(UserData)); @@ -660,7 +660,7 @@ static UserData *get_user_data(Channel * c, User * u) return user->ud; } else { - user->ud = (UserData *)scalloc(sizeof(UserData), 1); + user->ud = new UserData; user->ud->last_use = time(NULL); return user->ud; } @@ -989,7 +989,7 @@ char *normalizeBuffer(const char *buf) int i, len, j = 0; len = strlen(buf); - newbuf = (char *) smalloc(sizeof(char) * len + 1); + newbuf = new char[len + 1]; for (i = 0; i < len; i++) { switch (buf[i]) { diff --git a/src/channels.c b/src/channels.c index 8a24b3ddf..203f53751 100644 --- a/src/channels.c +++ b/src/channels.c @@ -35,8 +35,8 @@ void chan_deluser(User * user, Channel * c) if (u->ud) { if (u->ud->lastline) - free(u->ud->lastline); - free(u->ud); + delete [] u->ud->lastline; + delete u->ud; } if (u->next) @@ -45,7 +45,7 @@ void chan_deluser(User * user, Channel * c) u->prev->next = u->next; else c->users = u->next; - free(u); + delete u; c->usercount--; if (s_BotServ && c->ci && c->ci->bi && c->usercount == BSMinUsers - 1) { @@ -555,8 +555,8 @@ void do_join(const char *source, int ac, const char **av) chan_deluser(user, c->chan); send_event(EVENT_PART_CHANNEL, 3, EVENT_STOP, user->nick, channame); - free(channame); - free(c); + delete [] channame; + delete c; c = nextc; } user->chans = NULL; @@ -649,7 +649,7 @@ void do_kick(const char *source, int ac, const char **av) c->prev->next = c->next; else user->chans = c->next; - free(c); + delete c; } } } @@ -707,11 +707,11 @@ void do_part(const char *source, int ac, const char **av) c->prev->next = c->next; else user->chans = c->next; - free(c); + delete c; send_event(EVENT_PART_CHANNEL, (ac >= 2 ? 4 : 3), EVENT_STOP, user->nick, channame, (ac >= 2 ? av[1] : "")); - free(channame); + delete [] channame; } } } @@ -1027,7 +1027,7 @@ void do_sjoin(const char *source, int ac, const char **av) alog("debug: SJOIN for nonexistent user %s on %s", s, av[1]); } - free((char *)s); + delete [] s; return; } @@ -1067,7 +1067,7 @@ void do_sjoin(const char *source, int ac, const char **av) break; s = end + 1; } - free((char *)s); + delete [] s; } else if (ac == 2) { if (ircd->ts6) { user = find_byuid(source); @@ -1224,17 +1224,17 @@ void do_topic(const char *source, int ac, const char **av) if ((ac > 3) && *av[3] && ci && ci->last_topic && (strcmp(av[3], ci->last_topic) == 0) && (strcmp(topicsetter, ci->last_topic_setter) == 0)) { - free(topicsetter); + delete [] topicsetter; return; } if (check_topiclock(c, topic_time)) { - free(topicsetter); + delete [] topicsetter; return; } if (c->topic) { - free(c->topic); + delete [] c->topic; c->topic = NULL; } if (ac > 3 && *av[3]) { @@ -1243,7 +1243,7 @@ void do_topic(const char *source, int ac, const char **av) strscpy(c->topic_setter, topicsetter, sizeof(c->topic_setter)); c->topic_time = topic_time; - free(topicsetter); + delete [] topicsetter; record_topic(av[0]); @@ -1435,7 +1435,7 @@ void chan_set_correct_modes(User * user, Channel * c, int give_modes) if ((add_modes & CUS_OWNER) && !(status & CUS_OWNER)) { tmp = stripModePrefix(ircd->ownerset); strcat(modebuf, tmp); - free(tmp); + delete [] tmp; strcat(userbuf, " "); strcat(userbuf, user->nick); } else { @@ -1444,7 +1444,7 @@ void chan_set_correct_modes(User * user, Channel * c, int give_modes) if ((add_modes & CUS_PROTECT) && !(status & CUS_PROTECT)) { tmp = stripModePrefix(ircd->adminset); strcat(modebuf, tmp); - free(tmp); + delete [] tmp; strcat(userbuf, " "); strcat(userbuf, user->nick); } else { @@ -1478,14 +1478,14 @@ void chan_set_correct_modes(User * user, Channel * c, int give_modes) if (rem_modes & CUS_OWNER) { tmp = stripModePrefix(ircd->ownerset); strcat(modebuf, tmp); - free(tmp); + delete [] tmp; strcat(userbuf, " "); strcat(userbuf, user->nick); } if (rem_modes & CUS_PROTECT) { tmp = stripModePrefix(ircd->adminset); strcat(modebuf, tmp); - free(tmp); + delete [] tmp; strcat(userbuf, " "); strcat(userbuf, user->nick); } @@ -1526,7 +1526,7 @@ void chan_adduser2(User * user, Channel * c) { struct c_userlist *u; - u = (struct c_userlist *)scalloc(sizeof(struct c_userlist), 1); + u = new c_userlist; u->next = c->users; if (c->users) c->users->prev = u; @@ -1591,7 +1591,7 @@ Channel *chan_create(const char *chan, time_t ts) if (debug) alog("debug: Creating channel %s", chan); /* Allocate pre-cleared memory */ - c = (Channel *)scalloc(sizeof(Channel), 1); + c = new Channel; strscpy(c->name, chan, sizeof(c->name)); list = &chanlist[HASH(c->name)]; c->next = *list; @@ -1629,26 +1629,26 @@ void chan_delete(Channel * c) for (bd = c->bd; bd; bd = next) { if (bd->mask) - free(bd->mask); + delete [] bd->mask; next = bd->next; - free(bd); + delete bd; } if (c->ci) c->ci->c = NULL; if (c->topic) - free(c->topic); + delete [] c->topic; if (c->key) - free(c->key); + delete [] c->key; if (ircd->fmode) { if (c->flood) - free(c->flood); + delete [] c->flood; } if (ircd->Lmode) { if (c->redirect) - free(c->redirect); + delete [] c->redirect; } if (c->bans && c->bans->count) { @@ -1680,7 +1680,7 @@ void chan_delete(Channel * c) else chanlist[HASH(c->name)] = c->next; - free(c); + delete c; } /*************************************************************************/ @@ -1800,7 +1800,7 @@ Channel *join_user_update(User * user, Channel * chan, const char *name, if (debug) alog("debug: %s joins %s", user->nick, chan->name); - c = (u_chanlist *)scalloc(sizeof(*c), 1); + c = new u_chanlist; c->next = user->chans; if (user->chans) user->chans->prev = c; @@ -1817,7 +1817,7 @@ Channel *join_user_update(User * user, Channel * chan, const char *name, void set_flood(Channel * chan, const char *value) { if (chan->flood) - free(chan->flood); + delete [] chan->flood; chan->flood = value ? sstrdup(value) : NULL; if (debug) @@ -1830,7 +1830,7 @@ void set_flood(Channel * chan, const char *value) void chan_set_key(Channel * chan, const char *value) { if (chan->key) - free(chan->key); + delete [] chan->key; chan->key = value ? sstrdup(value) : NULL; if (debug) @@ -1854,7 +1854,7 @@ void set_limit(Channel * chan, const char *value) void set_redirect(Channel * chan, const char *value) { if (chan->redirect) - free(chan->redirect); + delete [] chan->redirect; chan->redirect = value ? sstrdup(value) : NULL; if (debug) @@ -1880,7 +1880,7 @@ void do_mass_mode(char *modes) for (c = firstchan(); c; c = nextchan()) { if (c->bouncy_modes) { free(av); - free(myModes); + delete [] myModes; return; } else { ircdproto->SendMode(findbot(s_OperServ), c->name, "%s", modes); @@ -1888,7 +1888,7 @@ void do_mass_mode(char *modes) } } free(av); - free(myModes); + delete [] myModes; } /*************************************************************************/ @@ -1918,7 +1918,7 @@ Entry *entry_create(char *mask) int do_free; uint32 ip, cidr; - entry = (Entry *)scalloc(1, sizeof(Entry)); + entry = new Entry; entry->type = ENTRYTYPE_NONE; entry->prev = NULL; entry->next = NULL; @@ -2001,7 +2001,9 @@ Entry *entry_create(char *mask) entry->type |= ENTRYTYPE_HOST; } } - free(mask); + delete [] mask; + if (do_free) + delete [] host; return entry; } @@ -2022,7 +2024,10 @@ Entry *entry_add(EList * list, const char *mask) e = entry_create(hostmask); if (!e) + { + delete [] hostmask; return NULL; + } e->next = list->entries; e->prev = NULL; @@ -2032,6 +2037,8 @@ Entry *entry_add(EList * list, const char *mask) list->entries = e; list->count++; + delete [] hostmask; + return e; } @@ -2055,13 +2062,13 @@ void entry_delete(EList * list, Entry * e) list->entries = e->next; if (e->nick) - free(e->nick); + delete [] e->nick; if (e->user) - free(e->user); + delete [] e->user; if (e->host) - free(e->host); - free(e->mask); - free(e); + delete [] e->host; + delete [] e->mask; + delete e; list->count--; } @@ -2075,7 +2082,7 @@ EList *list_create() { EList *list; - list = (EList *)scalloc(1, sizeof(EList)); + list = new EList; list->entries = NULL; list->count = 0; @@ -2157,7 +2164,7 @@ int entry_match_mask(Entry * e, char *mask, uint32 ip) res = entry_match(e, nick, user, host, ip); /* Free the destroyed mask. */ - free(hostmask); + delete [] hostmask; return res; } @@ -2225,7 +2232,7 @@ Entry *elist_match_mask(EList * list, char *mask, uint32 ip) res = elist_match(list, nick, user, host, ip); /* Free the destroyed mask. */ - free(hostmask); + delete [] hostmask; return res; } @@ -2266,7 +2273,7 @@ Entry *elist_match_user(EList * list, User * u) elist_match(list, u->nick, u->username, u->vhost, ip); if (host) - free(host); + delete [] host; return res; } diff --git a/src/chanserv.c b/src/chanserv.c index f42248098..944cd2e98 100644 --- a/src/chanserv.c +++ b/src/chanserv.c @@ -333,7 +333,7 @@ void load_cs_dbase(void) SAFE(read_string(&s, f)); if (s) { ci->founder = findcore(s); - free(s); + delete [] s; } else ci->founder = NULL; if (ver >= 7) { @@ -348,7 +348,7 @@ void load_cs_dbase(void) else ci->successor = NULL; } - free(s); + delete [] s; } else ci->successor = NULL; } else { @@ -382,7 +382,7 @@ void load_cs_dbase(void) ci->bantype = tmp16; SAFE(read_int16(&tmp16, f)); n_levels = tmp16; - ci->levels = (int16 *)scalloc(2 * CA_SIZE, 1); + ci->levels = new int16[CA_SIZE]; reset_levels(ci); for (j = 0; j < n_levels; j++) { SAFE(read_int16(&tmp16, f)); @@ -401,7 +401,7 @@ void load_cs_dbase(void) SAFE(read_string(&s, f)); if (s) { ci->access[j].nc = findcore(s); - free(s); + delete [] s; } if (ci->access[j].nc == NULL) ci->access[j].in_use = 0; @@ -424,7 +424,7 @@ void load_cs_dbase(void) ci->akick[j].u.nc = findcore(s); if (!ci->akick[j].u.nc) ci->akick[j].flags &= ~AK_USED; - free(s); + delete [] s; } else { ci->akick[j].u.mask = s; } @@ -432,12 +432,12 @@ void load_cs_dbase(void) if (ci->akick[j].flags & AK_USED) ci->akick[j].reason = s; else if (s) - free(s); + delete [] s; SAFE(read_string(&s, f)); if (ci->akick[j].flags & AK_USED) { ci->akick[j].creator = s; } else if (s) { - free(s); + delete [] s; } SAFE(read_int32(&tmp32, f)); if (ci->akick[j].flags & AK_USED) @@ -457,14 +457,14 @@ void load_cs_dbase(void) } else { SAFE(read_string(&s, f)); if (s) - free(s); + delete [] s; } if (ircd->Lmode) { SAFE(read_string(&ci->mlock_redirect, f)); } else { SAFE(read_string(&s, f)); if (s) - free(s); + delete [] s; } SAFE(read_int16(&tmp16, f)); @@ -495,7 +495,7 @@ void load_cs_dbase(void) SAFE(read_string(&s, f)); if (s) { ci->bi = findbot(s); - free(s); + delete [] s; } else ci->bi = NULL; @@ -503,7 +503,7 @@ void load_cs_dbase(void) ci->botflags = tmp32; SAFE(read_int16(&tmp16, f)); n_ttb = tmp16; - ci->ttb = (int16 *)scalloc(2 * TTB_SIZE, 1); + ci->ttb = new int16[2 * TTB_SIZE]; for (j = 0; j < n_ttb; j++) { SAFE(read_int16(&tmp16, f)); if (j < TTB_SIZE) @@ -930,7 +930,7 @@ int check_valid_op(User * user, Channel * chan, int servermode) "%so%s %s %s %s", ircd->adminunset, tmp, user->nick, user->nick, user->nick); - free(tmp); + delete [] tmp; } else { tmp = stripModePrefix(ircd->ownerunset); ircdproto->SendMode(whosends(chan->ci), chan->name, @@ -938,7 +938,7 @@ int check_valid_op(User * user, Channel * chan, int servermode) ircd->adminunset, tmp, user->nick, user->nick, user->nick, user->nick); - free(tmp); + delete [] tmp; } } else if (!ircd->owner && ircd->protect) { if (check_access(user, chan->ci, CA_AUTOHALFOP)) { @@ -974,7 +974,7 @@ int check_valid_op(User * user, Channel * chan, int servermode) "%sho%s %s %s %s %s", ircd->adminunset, tmp, user->nick, user->nick, user->nick, user->nick); - free(tmp); + delete [] tmp; } else { ircdproto->SendMode(whosends(chan->ci), chan->name, "-ho %s %s", user->nick, user->nick); @@ -1068,7 +1068,7 @@ int check_should_owner(User * user, char *chan) tmp = stripModePrefix(ircd->ownerset); ircdproto->SendMode(whosends(ci), chan, "+o%s %s %s", tmp, user->nick, user->nick); - free(tmp); + delete [] tmp; return 1; } @@ -1089,7 +1089,7 @@ int check_should_protect(User * user, char *chan) tmp = stripModePrefix(ircd->adminset); ircdproto->SendMode(whosends(ci), chan, "+o%s %s %s", tmp, user->nick, user->nick); - free(tmp); + delete [] tmp; return 1; } @@ -1109,7 +1109,7 @@ static void timeout_leave(Timeout * to) ci->flags &= ~CI_INHABIT; ircdproto->SendPart(findbot(s_ChanServ), chan, NULL); - free(to->data); + delete [] (const char *)to->data; } @@ -1267,7 +1267,7 @@ void record_topic(const char *chan) return; if (ci->last_topic) - free(ci->last_topic); + delete [] ci->last_topic; if (c->topic) ci->last_topic = sstrdup(c->topic); @@ -1301,7 +1301,7 @@ void restore_topic(const char *chan) return; } if (c->topic) - free(c->topic); + delete [] c->topic; if (ci->last_topic) { c->topic = sstrdup(ci->last_topic); strscpy(c->topic_setter, ci->last_topic_setter, NICKMAX); @@ -1345,7 +1345,7 @@ int check_topiclock(Channel * c, time_t topic_time) return 0; if (c->topic) - free(c->topic); + delete [] c->topic; if (ci->last_topic) { c->topic = sstrdup(ci->last_topic); strscpy(c->topic_setter, ci->last_topic_setter, NICKMAX); @@ -1476,11 +1476,11 @@ void cs_remove_nick(const NickCore * nc) if ((akick->flags & AK_USED) && (akick->flags & AK_ISNICK) && akick->u.nc == nc) { if (akick->creator) { - free(akick->creator); + delete [] akick->creator; akick->creator = NULL; } if (akick->reason) { - free(akick->reason); + delete [] akick->reason; akick->reason = NULL; } akick->flags = 0; @@ -1600,7 +1600,7 @@ ChannelInfo *makechan(const char *chan) strscpy(ci->name, chan, CHANMAX); ci->time_registered = time(NULL); reset_levels(ci); - ci->ttb = (int16 *)scalloc(2 * TTB_SIZE, 1); + ci->ttb = new int16[2 * TTB_SIZE]; for (i = 0; i < TTB_SIZE; i++) ci->ttb[i] = 0; alpha_insert_chan(ci); @@ -1667,7 +1667,7 @@ int delchan(ChannelInfo * ci) cilist->prev->next = cilist->next; else u->founder_chans = cilist->next; - free(cilist); + delete cilist; } cilist = cilist_next; } @@ -1684,30 +1684,30 @@ int delchan(ChannelInfo * ci) else chanlists[(unsigned char) tolower(ci->name[1])] = ci->next; if (ci->desc) - free(ci->desc); + delete [] ci->desc; if (ci->url) - free(ci->url); + delete [] ci->url; if (ci->email) - free(ci->email); + delete [] ci->email; if (ci->entry_message) - free(ci->entry_message); + delete [] ci->entry_message; if (ci->mlock_key) - free(ci->mlock_key); + delete [] ci->mlock_key; if (ircd->fmode) { if (ci->mlock_flood) - free(ci->mlock_flood); + delete [] ci->mlock_flood; } if (ircd->Lmode) { if (ci->mlock_redirect) - free(ci->mlock_redirect); + delete [] ci->mlock_redirect; } if (ci->last_topic) - free(ci->last_topic); + delete [] ci->last_topic; if (ci->forbidby) - free(ci->forbidby); + delete [] ci->forbidby; if (ci->forbidreason) - free(ci->forbidreason); + delete [] ci->forbidreason; if (ci->access) free(ci->access); if (debug >= 2) { @@ -1715,11 +1715,11 @@ int delchan(ChannelInfo * ci) } for (i = 0; i < ci->akickcount; i++) { if (!(ci->akick[i].flags & AK_ISNICK) && ci->akick[i].u.mask) - free(ci->akick[i].u.mask); + delete [] ci->akick[i].u.mask; if (ci->akick[i].reason) - free(ci->akick[i].reason); + delete [] ci->akick[i].reason; if (ci->akick[i].creator) - free(ci->akick[i].creator); + delete [] ci->akick[i].creator; } if (debug >= 2) { alog("debug: delchan() done with the akick list"); @@ -1727,14 +1727,14 @@ int delchan(ChannelInfo * ci) if (ci->akick) free(ci->akick); if (ci->levels) - free(ci->levels); + delete [] ci->levels; if (debug >= 2) { alog("debug: delchan() top of the memo list"); } if (ci->memos.memos) { for (i = 0; i < ci->memos.memocount; i++) { if (ci->memos.memos[i].text) - free(ci->memos.memos[i].text); + delete [] ci->memos.memos[i].text; } free(ci->memos.memos); } @@ -1742,14 +1742,14 @@ int delchan(ChannelInfo * ci) alog("debug: delchan() done with the memo list"); } if (ci->ttb) - free(ci->ttb); + delete [] ci->ttb; if (debug >= 2) { alog("debug: delchan() top of the badword list"); } for (i = 0; i < ci->bwcount; i++) { if (ci->badwords[i].word) - free(ci->badwords[i].word); + delete [] ci->badwords[i].word; } if (ci->badwords) free(ci->badwords); @@ -1788,8 +1788,8 @@ void reset_levels(ChannelInfo * ci) } if (ci->levels) - free(ci->levels); - ci->levels = (int16 *)scalloc(CA_SIZE * sizeof(*ci->levels), 1); + delete [] ci->levels; + ci->levels = new int16[CA_SIZE]; for (i = 0; def_levels[i][0] >= 0; i++) ci->levels[def_levels[i][0]] = def_levels[i][1]; } @@ -1950,7 +1950,7 @@ int get_idealban(ChannelInfo * ci, User * u, char *ret, int retlen) case 3: mask = create_mask(u); snprintf(ret, retlen, "*!%s", mask); - free(mask); + delete [] mask; return 1; default: @@ -2018,7 +2018,7 @@ void cs_set_flood(ChannelInfo * ci, const char *value) } if (ci->mlock_flood) - free(ci->mlock_flood); + delete [] ci->mlock_flood; /* This looks ugly, but it works ;) */ if (ircdproto->IsFloodModeParamValid(value)) { @@ -2038,7 +2038,7 @@ void cs_set_key(ChannelInfo * ci, const char *value) } if (ci->mlock_key) - free(ci->mlock_key); + delete [] ci->mlock_key; /* Don't allow keys with a coma */ if (value && *value != ':' && !strchr(value, ',')) { @@ -2072,7 +2072,7 @@ void cs_set_redirect(ChannelInfo * ci, const char *value) } if (ci->mlock_redirect) - free(ci->mlock_redirect); + delete [] ci->mlock_redirect; /* Don't allow keys with a coma */ if (value && *value == '#') { @@ -2189,8 +2189,13 @@ void stick_mask(ChannelInfo * ci, AutoKick * akick) for (ban = ci->c->bans->entries; ban; ban = ban->next) { /* If akick is already covered by a wider ban. Example: c->bans[i] = *!*@*.org and akick->u.mask = *!*@*.epona.org */ - if (entry_match_mask(ban, sstrdup(akick->u.mask), 0)) + char *mask = sstrdup(akick->u.mask); + if (entry_match_mask(ban, mask, 0)) + { + delete [] mask; return; + } + delete [] mask; if (ircd->reversekickcheck) { /* If akick is wider than a ban already in place. diff --git a/src/core/bs_badwords.c b/src/core/bs_badwords.c index 92561c26b..15e7c15ef 100644 --- a/src/core/bs_badwords.c +++ b/src/core/bs_badwords.c @@ -176,7 +176,7 @@ int do_badwords(User * u) notice_lang(s_BotServ, u, BOT_BADWORDS_DELETED, bw->word, ci->name); if (bw->word) - free(bw->word); + delete [] bw->word; bw->word = NULL; bw->in_use = 0; deleted = 1; @@ -194,7 +194,7 @@ int do_badwords(User * u) ci->badwords[a].type = ci->badwords[b].type; if (ci->badwords[b].word) { ci->badwords[a].word = sstrdup(ci->badwords[b].word); - free(ci->badwords[b].word); + delete [] ci->badwords[b].word; } ci->badwords[b].word = NULL; ci->badwords[b].in_use = 0; @@ -246,7 +246,7 @@ int do_badwords(User * u) for (i = 0; i < ci->bwcount; i++) if (ci->badwords[i].word) - free(ci->badwords[i].word); + delete [] ci->badwords[i].word; free(ci->badwords); ci->badwords = NULL; @@ -273,7 +273,7 @@ int badwords_del_callback(User * u, int num, va_list args) bw = &ci->badwords[num - 1]; if (bw->word) - free(bw->word); + delete [] bw->word; bw->word = NULL; bw->in_use = 0; diff --git a/src/core/bs_bot.c b/src/core/bs_bot.c index 946dd2d96..77e1f712e 100644 --- a/src/core/bs_bot.c +++ b/src/core/bs_bot.c @@ -58,7 +58,7 @@ int do_bot(User * u) BotInfo *bi; char *cmd = strtok(NULL, " "); char *ch = NULL; - + if (!cmd) { syntax_error(s_BotServ, u, "BOT", BOT_BOT_SYNTAX); @@ -77,7 +77,7 @@ int do_bot(User * u) char *user = strtok(NULL, " "); char *host = strtok(NULL, " "); char *real = strtok(NULL, ""); - + if (!nick || !user || !host || !real) { syntax_error(s_BotServ, u, "BOT", BOT_BOT_SYNTAX); @@ -89,7 +89,7 @@ int do_bot(User * u) notice_lang(s_BotServ, u, BOT_BOT_ALREADY_EXISTS, nick); return MOD_CONT; } - + if (strlen(nick) > NickLen) { notice_lang(s_BotServ, u, BOT_BAD_NICK); @@ -130,7 +130,7 @@ int do_bot(User * u) notice_lang(s_BotServ, u, BOT_BAD_NICK); return MOD_CONT; } - + /* Check the host is valid re RFC 2812 */ if (!isValidHost(host, 3)) { @@ -146,7 +146,7 @@ int do_bot(User * u) return MOD_CONT; } } - + /* We check whether the nick is registered, and inform the user * if so. You need to drop the nick manually before you can use @@ -157,30 +157,30 @@ int do_bot(User * u) notice_lang(s_BotServ, u, NICK_ALREADY_REGISTERED, nick); return MOD_CONT; } - + bi = new BotInfo(nick); if (!bi) { notice_lang(s_BotServ, u, BOT_BOT_CREATION_FAILED); return MOD_CONT; } - + bi->user = sstrdup(user); bi->host = sstrdup(host); bi->real = sstrdup(real); bi->created = time(NULL); bi->chancount = 0; - + /* We check whether user with this nick is online, and kill it if so */ EnforceQlinedNick(nick, s_BotServ); - + /* We make the bot online, ready to serve */ - ircdproto->SendClientIntroduction(bi->nick, bi->user, bi->host, bi->real, + ircdproto->SendClientIntroduction(bi->nick, bi->user, bi->host, bi->real, ircd->pseudoclient_mode, bi->uid.c_str()); - + notice_lang(s_BotServ, u, BOT_BOT_ADDED, bi->nick, bi->user, bi->host, bi->real); - + send_event(EVENT_BOT_CREATE, 1, bi->nick); } else if (!stricmp(cmd, "CHANGE")) @@ -190,7 +190,7 @@ int do_bot(User * u) char *user = strtok(NULL, " "); char *host = strtok(NULL, " "); char *real = strtok(NULL, ""); - + if (!oldnick || !nick) { syntax_error(s_BotServ, u, "BOT", BOT_BOT_SYNTAX); @@ -240,7 +240,7 @@ int do_bot(User * u) notice_lang(s_BotServ, u, BOT_BOT_ANY_CHANGES); return MOD_CONT; } - + /* Check the nick is valid re RFC 2812 */ if (isdigit(nick[0]) || nick[0] == '-') { @@ -256,20 +256,20 @@ int do_bot(User * u) return MOD_CONT; } } - + /* check for hardcored ircd forbidden nicks */ if (!ircdproto->IsNickValid(nick)) { notice_lang(s_BotServ, u, BOT_BAD_NICK); return MOD_CONT; } - + if (host && !isValidHost(host, 3)) { notice_lang(s_BotServ, u, BOT_BAD_HOST); return MOD_CONT; } - + if (user) { for (ch = user; *ch && (ch - user) < USERMAX; ch++) @@ -281,13 +281,13 @@ int do_bot(User * u) } } } - + if (stricmp(bi->nick, nick) && findbot(nick)) { notice_lang(s_BotServ, u, BOT_BOT_ALREADY_EXISTS, nick); return MOD_CONT; } - + if (stricmp(bi->nick, nick)) { /* We check whether the nick is registered, and inform the user @@ -299,37 +299,37 @@ int do_bot(User * u) notice_lang(s_BotServ, u, NICK_ALREADY_REGISTERED, nick); return MOD_CONT; } - + /* The new nick is really different, so we remove the Q line for the old nick. */ if (ircd->sqline) { ircdproto->SendSQLineDel(bi->nick); } - + /* We check whether user with this nick is online, and kill it if so */ EnforceQlinedNick(nick, s_BotServ); } - + if (strcmp(nick, bi->nick)) bi->ChangeNick(nick); - + if (user && strcmp(user, bi->user)) { - free(bi->user); + delete [] bi->user; bi->user = sstrdup(user); } if (host && strcmp(host, bi->host)) { - free(bi->host); + delete [] bi->host; bi->host = sstrdup(host); } if (real && strcmp(real, bi->real)) { - free(bi->real); + delete [] bi->real; bi->real = sstrdup(real); } - + /* If only the nick changes, we just make the bot change his nick, * else we must make it quit and rejoin. We must not forget to set * the Q:Line either (it's otherwise set in SendClientIntroduction) @@ -346,34 +346,34 @@ int do_bot(User * u) ircd->pseudoclient_mode, bi->uid.c_str()); bi->RejoinAll(); } - + notice_lang(s_BotServ, u, BOT_BOT_CHANGED, oldnick, bi->nick, bi->user, bi->host, bi->real); - + send_event(EVENT_BOT_CHANGE, 1, bi->nick); } else if (!stricmp(cmd, "DEL")) { char *nick = strtok(NULL, " "); - + if (!nick) { syntax_error(s_BotServ, u, "BOT", BOT_BOT_SYNTAX); return MOD_CONT; } - + if (!(bi = findbot(nick))) { notice_lang(s_BotServ, u, BOT_DOES_NOT_EXIST, nick); return MOD_CONT; } - + if (nickIsServices(nick, 0)) { notice_lang(s_BotServ, u, BOT_DOES_NOT_EXIST); return MOD_CONT; } - + send_event(EVENT_BOT_DEL, 1, bi->nick); ircdproto->SendQuit(bi, "Quit: Help! I'm being deleted by %s!", u->nick); ircdproto->SendSQLineDel(bi->nick); @@ -382,7 +382,7 @@ int do_bot(User * u) } else syntax_error(s_BotServ, u, "BOT", BOT_BOT_SYNTAX); - + return MOD_CONT; } diff --git a/src/core/bs_fantasy_kick.c b/src/core/bs_fantasy_kick.c index f5c3018b6..98c176425 100644 --- a/src/core/bs_fantasy_kick.c +++ b/src/core/bs_fantasy_kick.c @@ -6,8 +6,8 @@ * Please read COPYING and README for further details. * * Based on the original code of Epona by Lara. - * Based on the original code of Services by Andy Church. - * + * Based on the original code of Services by Andy Church. + * * $Id$ * */ @@ -77,9 +77,9 @@ int do_fantasy(int argc, char **argv) } if (target) - free(target); + delete [] target; if (reason) - free(reason); + delete [] reason; return MOD_CONT; } diff --git a/src/core/bs_fantasy_kickban.c b/src/core/bs_fantasy_kickban.c index 1281d938b..1167caf30 100644 --- a/src/core/bs_fantasy_kickban.c +++ b/src/core/bs_fantasy_kickban.c @@ -79,9 +79,9 @@ int do_fantasy(int argc, char **argv) } if (target) - free(target); + delete [] target; if (reason) - free(reason); + delete [] reason; return MOD_CONT; } diff --git a/src/core/bs_fantasy_seen.c b/src/core/bs_fantasy_seen.c index 76e9a0273..0a9236aa0 100644 --- a/src/core/bs_fantasy_seen.c +++ b/src/core/bs_fantasy_seen.c @@ -127,7 +127,7 @@ int do_fantasy(int argc, char **argv) ircdproto->SendPrivmsg(ci->bi, ci->name, "%s", buf); } /* free myStrGetToken(ed) variable target (#851) */ - Anope_Free(target); + if (target) delete [] target; } return MOD_CONT; diff --git a/src/core/cs_akick.c b/src/core/cs_akick.c index 94fa7c826..df4bd69f5 100644 --- a/src/core/cs_akick.c +++ b/src/core/cs_akick.c @@ -6,8 +6,8 @@ * Please read COPYING and README for further details. * * Based on the original code of Epona by Lara. - * Based on the original code of Services by Andy Church. - * + * Based on the original code of Services by Andy Church. + * * $Id$ * */ @@ -62,15 +62,15 @@ int akick_del(User * u, AutoKick * akick) if (akick->flags & AK_ISNICK) { akick->u.nc = NULL; } else { - free(akick->u.mask); + delete [] akick->u.mask; akick->u.mask = NULL; } if (akick->reason) { - free(akick->reason); + delete [] akick->reason; akick->reason = NULL; } if (akick->creator) { - free(akick->creator); + delete [] akick->creator; akick->creator = NULL; } akick->addtime = 0; @@ -206,13 +206,12 @@ int do_akick(User * u) if (!na) { split_usermask(mask, &nick, &user, &host); - mask = - (char *)scalloc(strlen(nick) + strlen(user) + strlen(host) + 3, 1); + mask = new char[strlen(nick) + strlen(user) + strlen(host) + 3]; freemask = 1; sprintf(mask, "%s!%s@%s", nick, user, host); - free(nick); - free(user); - free(host); + delete [] nick; + delete [] user; + delete [] host; } else { if (na->status & NS_VERBOTEN) { notice_lang(s_ChanServ, u, NICK_X_FORBIDDEN, mask); @@ -226,18 +225,18 @@ int do_akick(User * u) if (is_excepted_mask(ci, mask) == 1) { notice_lang(s_ChanServ, u, CHAN_EXCEPTED, mask, chan); if (freemask) - free(mask); + delete [] mask; return MOD_CONT; } } - /* Check whether target nick has equal/higher access + /* Check whether target nick has equal/higher access * or whether the mask matches a user with higher/equal access - Viper */ if ((ci->flags & CI_PEACE) && nc) { if ((nc == ci->founder) || (get_access_nc(nc, ci) >= get_access(u, ci))) { notice_lang(s_ChanServ, u, PERMISSION_DENIED); if (freemask) - free(mask); + delete [] mask; return MOD_CONT; } } else if ((ci->flags & CI_PEACE)) { @@ -249,7 +248,7 @@ int do_akick(User * u) if (is_founder(u2, ci) || (get_access(u2, ci) >= get_access(u, ci))) { if (match_usermask(mask, u2)) { notice_lang(s_ChanServ, u, PERMISSION_DENIED); - free(mask); + delete [] mask; return MOD_CONT; } } @@ -263,12 +262,12 @@ int do_akick(User * u) if (na2->status & NS_VERBOTEN) continue; - if (na2->nc && ((na2->nc == ci->founder) || (get_access_nc(na2->nc, ci) + if (na2->nc && ((na2->nc == ci->founder) || (get_access_nc(na2->nc, ci) >= get_access(u, ci)))) { snprintf(buf, BUFSIZE, "%s!%s", na2->nick, na2->last_usermask); if (match_wild_nocase(mask, buf)) { notice_lang(s_ChanServ, u, PERMISSION_DENIED); - free(mask); + delete [] mask; return MOD_CONT; } } @@ -285,7 +284,7 @@ int do_akick(User * u) (akick->flags & AK_ISNICK) ? akick->u.nc-> display : akick->u.mask, chan); if (freemask) - free(mask); + delete [] mask; return MOD_CONT; } } @@ -295,7 +294,7 @@ int do_akick(User * u) if (ci->akickcount >= CSAutokickMax) { notice_lang(s_ChanServ, u, CHAN_AKICK_REACHED_LIMIT, CSAutokickMax); if (freemask) - free(mask); + delete [] mask; return MOD_CONT; } ci->akickcount++; @@ -335,10 +334,9 @@ int do_akick(User * u) do_kick(s_ChanServ, 3, argv); - // XXX: casting is necessary thanks to strict g++ stuff, really, we should be using std::string here though. - free((void *)argv[2]); - free((void *)argv[1]); - free((void *)argv[0]); + delete [] argv[2]; + delete [] argv[1]; + delete [] argv[0]; count++; } @@ -352,7 +350,7 @@ int do_akick(User * u) count); if (freemask) - free(mask); + delete [] mask; } else if (stricmp(cmd, "STICK") == 0) { NickAlias *na; @@ -603,9 +601,9 @@ int do_akick(User * u) do_kick(s_ChanServ, 3, argv); - free((void *)argv[2]); - free((void *)argv[1]); - free((void *)argv[0]); + delete [] argv[2]; + delete [] argv[1]; + delete [] argv[0]; count++; } diff --git a/src/core/cs_clear.c b/src/core/cs_clear.c index 9fca88548..3d2e13fdf 100644 --- a/src/core/cs_clear.c +++ b/src/core/cs_clear.c @@ -347,9 +347,9 @@ int do_clear(User * u) av[2] = sstrdup(buf); ircdproto->SendKick(whosends(ci), av[0], av[1], av[2]); do_kick(s_ChanServ, 3, av); - free((void *)av[2]); - free((void *)av[1]); - free((void *)av[0]); + delete [] av[2]; + delete [] av[1]; + delete [] av[0]; } notice_lang(s_ChanServ, u, CHAN_CLEARED_USERS, chan); } else { diff --git a/src/core/cs_identify.c b/src/core/cs_identify.c index baad140e8..219c23ea4 100644 --- a/src/core/cs_identify.c +++ b/src/core/cs_identify.c @@ -6,8 +6,8 @@ * Please read COPYING and README for further details. * * Based on the original code of Epona by Lara. - * Based on the original code of Services by Andy Church. - * + * Based on the original code of Services by Andy Church. + * * $Id$ * */ @@ -77,7 +77,7 @@ int do_identify(User * u) if ((res = enc_check_password(pass, ci->founderpass)) == 1) { if (!is_identified(u, ci)) { - uc = (struct u_chaninfolist *)scalloc(sizeof(*uc), 1); + uc = new u_chaninfolist; uc->next = u->founder_chans; if (u->founder_chans) u->founder_chans->prev = uc; diff --git a/src/core/cs_list.c b/src/core/cs_list.c index 7c2d3fba2..da2732067 100644 --- a/src/core/cs_list.c +++ b/src/core/cs_list.c @@ -91,14 +91,14 @@ int do_list(User * u) } for (s = tmp; *s; s++) { if (!isdigit(*s)) { - free(tmp); + delete [] tmp; notice_lang(s_ChanServ, u, LIST_INCORRECT_RANGE); notice_lang(s_ChanServ, u, CS_LIST_INCORRECT_RANGE); return MOD_CONT; } } from = atoi(tmp); - free(tmp); + delete [] tmp; tmp = myStrGetTokenRemainder(pattern, '-', 1); /* Read TO out */ if (!tmp) { notice_lang(s_ChanServ, u, LIST_INCORRECT_RANGE); @@ -107,14 +107,14 @@ int do_list(User * u) } for (s = tmp; *s; s++) { if (!isdigit(*s)) { - free(tmp); + delete [] tmp; notice_lang(s_ChanServ, u, LIST_INCORRECT_RANGE); notice_lang(s_ChanServ, u, CS_LIST_INCORRECT_RANGE); return MOD_CONT; } } to = atoi(tmp); - free(tmp); + delete [] tmp; pattern = sstrdup("*"); tofree = 1; } @@ -132,7 +132,7 @@ int do_list(User * u) } spattern_size = (strlen(pattern) + 2) * sizeof(char); - spattern = (char *)smalloc(spattern_size); + spattern = new char[spattern_size]; snprintf(spattern, spattern_size, "#%s", pattern); @@ -176,10 +176,10 @@ int do_list(User * u) } notice_lang(s_ChanServ, u, CHAN_LIST_END, nchans > CSListMax ? CSListMax : nchans, nchans); - free(spattern); + delete [] spattern; } if (tofree) - free(pattern); + delete [] pattern; return MOD_CONT; } diff --git a/src/core/cs_logout.c b/src/core/cs_logout.c index 16e2a8ebc..457fe90e3 100644 --- a/src/core/cs_logout.c +++ b/src/core/cs_logout.c @@ -6,8 +6,8 @@ * Please read COPYING and README for further details. * * Based on the original code of Epona by Lara. - * Based on the original code of Services by Andy Church. - * + * Based on the original code of Services by Andy Church. + * * $Id$ * */ @@ -109,7 +109,7 @@ void make_unidentified(User * u, ChannelInfo * ci) uci->prev->next = uci->next; else u->founder_chans = uci->next; - free(uci); + delete uci; break; } } diff --git a/src/core/cs_register.c b/src/core/cs_register.c index 524790330..44de7947c 100644 --- a/src/core/cs_register.c +++ b/src/core/cs_register.c @@ -153,7 +153,7 @@ int do_register(User * u) notice_lang(s_ChanServ, u, CHAN_PASSWORD_IS, tmp_pass); } - uc = (struct u_chaninfolist *)scalloc(sizeof(*uc), 1); + uc = new u_chaninfolist; uc->next = u->founder_chans; uc->prev = NULL; if (u->founder_chans) diff --git a/src/core/cs_set.c b/src/core/cs_set.c index 0a49d259d..f6ed8611b 100644 --- a/src/core/cs_set.c +++ b/src/core/cs_set.c @@ -374,7 +374,7 @@ int do_set_password(User * u, ChannelInfo * ci, char *param) int do_set_desc(User * u, ChannelInfo * ci, char *param) { if (ci->desc) - free(ci->desc); + delete [] ci->desc; ci->desc = sstrdup(param); notice_lang(s_ChanServ, u, CHAN_DESC_CHANGED, ci->name, param); return MOD_CONT; @@ -385,7 +385,7 @@ int do_set_desc(User * u, ChannelInfo * ci, char *param) int do_set_url(User * u, ChannelInfo * ci, char *param) { if (ci->url) - free(ci->url); + delete [] ci->url; if (param) { ci->url = sstrdup(param); notice_lang(s_ChanServ, u, CHAN_URL_CHANGED, ci->name, param); @@ -401,7 +401,7 @@ int do_set_url(User * u, ChannelInfo * ci, char *param) int do_set_email(User * u, ChannelInfo * ci, char *param) { if (ci->email) - free(ci->email); + delete [] ci->email; if (param) { ci->email = sstrdup(param); notice_lang(s_ChanServ, u, CHAN_EMAIL_CHANGED, ci->name, param); @@ -417,7 +417,7 @@ int do_set_email(User * u, ChannelInfo * ci, char *param) int do_set_entrymsg(User * u, ChannelInfo * ci, char *param) { if (ci->entry_message) - free(ci->entry_message); + delete [] ci->entry_message; if (param) { ci->entry_message = sstrdup(param); notice_lang(s_ChanServ, u, CHAN_ENTRY_MSG_CHANGED, ci->name, @@ -498,7 +498,7 @@ int do_set_mlock(User * u, ChannelInfo * ci, char *param) if ((ci->mlock_on & ircd->chan_lmode) && !(ci->mlock_on & anope_get_limit_mode())) { ci->mlock_on &= ~ircd->chan_lmode; - free(ci->mlock_redirect); + delete [] ci->mlock_redirect; notice_lang(s_ChanServ, u, CHAN_SET_MLOCK_L_REQUIRED); } } diff --git a/src/core/cs_suspend.c b/src/core/cs_suspend.c index fd9500e90..a1bab7c08 100644 --- a/src/core/cs_suspend.c +++ b/src/core/cs_suspend.c @@ -169,12 +169,12 @@ int do_unsuspend(User * u) ci->flags &= ~CI_SUSPENDED; if (ci->forbidreason) { - free(ci->forbidreason); + delete [] ci->forbidreason; ci->forbidreason = NULL; } if (ci->forbidby) { - free(ci->forbidby); + delete [] ci->forbidby; ci->forbidby = NULL; } diff --git a/src/core/cs_topic.c b/src/core/cs_topic.c index 111042403..fa43bef20 100644 --- a/src/core/cs_topic.c +++ b/src/core/cs_topic.c @@ -71,13 +71,13 @@ int do_cs_topic(User * u) notice_lang(s_ChanServ, u, PERMISSION_DENIED); } else { if (ci->last_topic) - free(ci->last_topic); + delete [] ci->last_topic; ci->last_topic = topic ? sstrdup(topic) : NULL; strscpy(ci->last_topic_setter, u->nick, NICKMAX); ci->last_topic_time = time(NULL); if (c->topic) - free(c->topic); + delete [] c->topic; c->topic = topic ? sstrdup(topic) : NULL; strscpy(c->topic_setter, u->nick, NICKMAX); if (ircd->topictsbackward) { diff --git a/src/core/hs_group.c b/src/core/hs_group.c index 336e5be92..a8e077639 100644 --- a/src/core/hs_group.c +++ b/src/core/hs_group.c @@ -6,8 +6,8 @@ * Please read COPYING and README for further details. * * Based on the original code of Epona by Lara. - * Based on the original code of Services by Andy Church. - * + * Based on the original code of Services by Andy Church. + * * $Id$ * */ @@ -93,10 +93,10 @@ int do_group(User * u) notice_lang(s_HostServ, u, HOST_GROUP, na->nc->display, vHost); } - free(vHost); + delete [] vHost; if (vIdent) - free(vIdent); - free(creator); + delete [] vIdent; + delete [] creator; } else { notice_lang(s_HostServ, u, HOST_NOT_ASSIGNED); diff --git a/src/core/hs_list.c b/src/core/hs_list.c index 46db3ab40..fe6ed7782 100644 --- a/src/core/hs_list.c +++ b/src/core/hs_list.c @@ -85,13 +85,13 @@ int listOut(User * u) } for (s = tmp; *s; s++) { if (!isdigit(*s)) { - free(tmp); + delete [] tmp; notice_lang(s_ChanServ, u, LIST_INCORRECT_RANGE); return MOD_CONT; } } from = atoi(tmp); - free(tmp); + delete [] tmp; tmp = myStrGetTokenRemainder(key, '-', 1); /* Read TO out */ if (!tmp) { notice_lang(s_ChanServ, u, LIST_INCORRECT_RANGE); @@ -99,13 +99,13 @@ int listOut(User * u) } for (s = tmp; *s; s++) { if (!isdigit(*s)) { - free(tmp); + delete [] tmp; notice_lang(s_ChanServ, u, LIST_INCORRECT_RANGE); return MOD_CONT; } } to = atoi(tmp); - free(tmp); + delete [] tmp; key = NULL; } } diff --git a/src/core/hs_set.c b/src/core/hs_set.c index 9886c1ce4..ab158dc84 100644 --- a/src/core/hs_set.c +++ b/src/core/hs_set.c @@ -6,8 +6,8 @@ * Please read COPYING and README for further details. * * Based on the original code of Epona by Lara. - * Based on the original code of Services by Andy Church. - * + * Based on the original code of Services by Andy Church. + * * $Id$ * */ @@ -58,7 +58,7 @@ int myDoSet(User * u) { char *nick = strtok(NULL, " "); char *rawhostmask = strtok(NULL, " "); - char *hostmask = (char *)smalloc(HOSTMAX); + char *hostmask = new char[HOSTMAX]; NickAlias *na; int32 tmp_time; @@ -68,7 +68,7 @@ int myDoSet(User * u) if (!nick || !rawhostmask) { notice_lang(s_HostServ, u, HOST_SET_SYNTAX, s_HostServ); - free(hostmask); + delete [] hostmask; return MOD_CONT; } @@ -77,32 +77,32 @@ int myDoSet(User * u) rawhostmask = myStrGetTokenRemainder(rawhostmask, '@', 1); /* get the remaining string */ if (!rawhostmask) { notice_lang(s_HostServ, u, HOST_SET_SYNTAX, s_HostServ); - free(vIdent); - free(hostmask); + delete [] vIdent; + delete [] hostmask; return MOD_CONT; } if (strlen(vIdent) > USERMAX - 1) { notice_lang(s_HostServ, u, HOST_SET_IDENTTOOLONG, USERMAX); - free(vIdent); - free(rawhostmask); - free(hostmask); + delete [] vIdent; + delete [] rawhostmask; + delete [] hostmask; return MOD_CONT; } else { for (s = vIdent; *s; s++) { if (!isvalidchar(*s)) { notice_lang(s_HostServ, u, HOST_SET_IDENT_ERROR); - free(vIdent); - free(rawhostmask); - free(hostmask); + delete [] vIdent; + delete [] rawhostmask; + delete [] hostmask; return MOD_CONT; } } } if (!ircd->vident) { notice_lang(s_HostServ, u, HOST_NO_VIDENT); - free(vIdent); - free(rawhostmask); - free(hostmask); + delete [] vIdent; + delete [] rawhostmask; + delete [] hostmask; return MOD_CONT; } } @@ -111,20 +111,20 @@ int myDoSet(User * u) else { notice_lang(s_HostServ, u, HOST_SET_TOOLONG, HOSTMAX); if (vIdent) { - free(vIdent); - free(rawhostmask); + delete [] vIdent; + delete [] rawhostmask; } - free(hostmask); + delete [] hostmask; return MOD_CONT; } if (!isValidHost(hostmask, 3)) { notice_lang(s_HostServ, u, HOST_SET_ERROR); if (vIdent) { - free(vIdent); - free(rawhostmask); + delete [] vIdent; + delete [] rawhostmask; } - free(hostmask); + delete [] hostmask; return MOD_CONT; } @@ -135,10 +135,10 @@ int myDoSet(User * u) if (na->status & NS_VERBOTEN) { notice_lang(s_HostServ, u, NICK_X_FORBIDDEN, nick); if (vIdent) { - free(vIdent); - free(rawhostmask); + delete [] vIdent; + delete [] rawhostmask; } - free(hostmask); + delete [] hostmask; return MOD_CONT; } if (vIdent && ircd->vident) { @@ -156,10 +156,10 @@ int myDoSet(User * u) } else { notice_lang(s_HostServ, u, HOST_NOREG, nick); } - free(hostmask); + delete [] hostmask; if (vIdent) { - free(vIdent); - free(rawhostmask); + delete [] vIdent; + delete [] rawhostmask; } return MOD_CONT; } diff --git a/src/core/hs_setall.c b/src/core/hs_setall.c index 2c220f638..10555d7b7 100644 --- a/src/core/hs_setall.c +++ b/src/core/hs_setall.c @@ -6,8 +6,8 @@ * Please read COPYING and README for further details. * * Based on the original code of Epona by Lara. - * Based on the original code of Services by Andy Church. - * + * Based on the original code of Services by Andy Church. + * * $Id$ * */ @@ -59,7 +59,7 @@ int do_setall(User * u) { char *nick = (char *)strtok(NULL, " "); char *rawhostmask = strtok(NULL, " "); - char *hostmask = (char *)smalloc(HOSTMAX); + char *hostmask = new char[HOSTMAX]; NickAlias *na; int32 tmp_time; @@ -69,7 +69,7 @@ int do_setall(User * u) if (!nick || !rawhostmask) { notice_lang(s_HostServ, u, HOST_SETALL_SYNTAX, s_HostServ); - free(hostmask); + delete [] hostmask; return MOD_CONT; } @@ -78,32 +78,32 @@ int do_setall(User * u) rawhostmask = myStrGetTokenRemainder(rawhostmask, '@', 1); /* get the remaining string */ if (!rawhostmask) { notice_lang(s_HostServ, u, HOST_SETALL_SYNTAX, s_HostServ); - free(vIdent); - free(hostmask); + delete [] vIdent; + delete [] hostmask; return MOD_CONT; } if (strlen(vIdent) > USERMAX - 1) { notice_lang(s_HostServ, u, HOST_SET_IDENTTOOLONG, USERMAX); - free(vIdent); - free(rawhostmask); - free(hostmask); + delete [] vIdent; + delete [] rawhostmask; + delete [] hostmask; return MOD_CONT; } else { for (s = vIdent; *s; s++) { if (!isvalidchar(*s)) { notice_lang(s_HostServ, u, HOST_SET_IDENT_ERROR); - free(vIdent); - free(rawhostmask); - free(hostmask); + delete [] vIdent; + delete [] rawhostmask; + delete [] hostmask; return MOD_CONT; } } } if (!ircd->vident) { notice_lang(s_HostServ, u, HOST_NO_VIDENT); - free(vIdent); - free(rawhostmask); - free(hostmask); + delete [] vIdent; + delete [] rawhostmask; + delete [] hostmask; return MOD_CONT; } } @@ -113,20 +113,20 @@ int do_setall(User * u) else { notice_lang(s_HostServ, u, HOST_SET_TOOLONG, HOSTMAX); if (vIdent) { - free(vIdent); - free(rawhostmask); + delete [] vIdent; + delete [] rawhostmask; } - free(hostmask); + delete [] hostmask; return MOD_CONT; } if (!isValidHost(hostmask, 3)) { notice_lang(s_HostServ, u, HOST_SET_ERROR); if (vIdent) { - free(vIdent); - free(rawhostmask); + delete [] vIdent; + delete [] rawhostmask; } - free(hostmask); + delete [] hostmask; return MOD_CONT; } @@ -136,10 +136,10 @@ int do_setall(User * u) if (na->status & NS_VERBOTEN) { notice_lang(s_HostServ, u, NICK_X_FORBIDDEN, nick); if (vIdent) { - free(vIdent); - free(rawhostmask); + delete [] vIdent; + delete [] rawhostmask; } - free(hostmask); + delete [] hostmask; return MOD_CONT; } if (vIdent && ircd->vident) { @@ -158,10 +158,10 @@ int do_setall(User * u) notice_lang(s_HostServ, u, HOST_NOREG, nick); } if (vIdent) { - free(vIdent); - free(rawhostmask); + delete [] vIdent; + delete [] rawhostmask; } - free(hostmask); + delete [] hostmask; return MOD_CONT; } diff --git a/src/core/ms_del.c b/src/core/ms_del.c index 0924dd7d8..fb620a013 100644 --- a/src/core/ms_del.c +++ b/src/core/ms_del.c @@ -6,8 +6,8 @@ * Please read COPYING and README for further details. * * Based on the original code of Epona by Lara. - * Based on the original code of Services by Andy Church. - * + * Based on the original code of Services by Andy Church. + * * $Id$ * */ @@ -135,7 +135,7 @@ int do_del(User * u) } else { /* Delete all memos. */ for (i = 0; i < mi->memocount; i++) { - free(mi->memos[i].text); + delete [] mi->memos[i].text; } free(mi->memos); mi->memos = NULL; diff --git a/src/core/ns_access.c b/src/core/ns_access.c index 502268cdf..c4409928d 100644 --- a/src/core/ns_access.c +++ b/src/core/ns_access.c @@ -6,8 +6,8 @@ * Please read COPYING and README for further details. * * Based on the original code of Epona by Lara. - * Based on the original code of Services by Andy Church. - * + * Based on the original code of Services by Andy Church. + * * $Id$ * */ @@ -142,7 +142,7 @@ int do_access(User * u) } notice_lang(s_NickServ, u, NICK_ACCESS_DELETED, *access); - free(*access); + delete [] *access; na->nc->accesscount--; if (i < na->nc->accesscount) /* if it wasn't the last entry... */ memmove(access, access + 1, diff --git a/src/core/ns_drop.c b/src/core/ns_drop.c index 1d528dd45..77721815a 100644 --- a/src/core/ns_drop.c +++ b/src/core/ns_drop.c @@ -127,7 +127,7 @@ int do_drop(User * u) else notice_lang(s_NickServ, u, NICK_DROPPED); if (my_nick) { - free(my_nick); + delete [] my_nick; } } } diff --git a/src/core/ns_forbid.c b/src/core/ns_forbid.c index 7783024fb..427a2db5c 100644 --- a/src/core/ns_forbid.c +++ b/src/core/ns_forbid.c @@ -132,7 +132,7 @@ NickAlias *makenick(const char *nick) alog("%s: group %s has been created", s_NickServ, nc->display); /* Then make the alias */ - na = (NickAlias *)scalloc(1, sizeof(NickAlias)); + na = new NickAlias; na->nick = sstrdup(nick); na->nc = nc; slist_add(&nc->aliases, na); diff --git a/src/core/ns_group.c b/src/core/ns_group.c index 14ce0386f..c40d961ac 100644 --- a/src/core/ns_group.c +++ b/src/core/ns_group.c @@ -6,8 +6,8 @@ * Please read COPYING and README for further details. * * Based on the original code of Epona by Lara. - * Based on the original code of Services by Andy Church. - * + * Based on the original code of Services by Andy Church. + * * $Id$ * */ @@ -177,9 +177,7 @@ int do_group(User * u) na = makealias(u->nick, target->nc); if (na) { - na->last_usermask = - (char *)scalloc(strlen(common_get_vident(u)) + - strlen(common_get_vhost(u)) + 2, 1); + na->last_usermask = new char[strlen(common_get_vident(u)) + strlen(common_get_vhost(u)) + 2]; sprintf(na->last_usermask, "%s@%s", common_get_vident(u), common_get_vhost(u)); na->last_realname = sstrdup(u->realname); @@ -208,7 +206,7 @@ int do_group(User * u) if (ircd->modeonreg) { len = strlen(ircd->modeonreg); strncpy(modes,ircd->modeonreg,512); - if(ircd->rootmodeonid && is_services_root(u)) { + if(ircd->rootmodeonid && is_services_root(u)) { strncat(modes,ircd->rootmodeonid,512-len); } else if(ircd->adminmodeonid && is_services_admin(u)) { strncat(modes,ircd->adminmodeonid,512-len); @@ -239,7 +237,7 @@ NickAlias *makealias(const char *nick, NickCore * nc) NickAlias *na; /* Just need to make the alias */ - na = (NickAlias *)scalloc(1, sizeof(NickAlias)); + na = new NickAlias; na->nick = sstrdup(nick); na->nc = nc; slist_add(&nc->aliases, na); diff --git a/src/core/ns_identify.c b/src/core/ns_identify.c index cd92731aa..ee328ef19 100644 --- a/src/core/ns_identify.c +++ b/src/core/ns_identify.c @@ -6,8 +6,8 @@ * Please read COPYING and README for further details. * * Based on the original code of Epona by Lara. - * Based on the original code of Services by Andy Church. - * + * Based on the original code of Services by Andy Church. + * * $Id$ * */ @@ -93,14 +93,12 @@ int do_identify(User * u) } else { if (!(na->status & NS_IDENTIFIED) && !(na->status & NS_RECOGNIZED)) { if (na->last_usermask) - free(na->last_usermask); - na->last_usermask = - (char *)scalloc(strlen(common_get_vident(u)) + - strlen(common_get_vhost(u)) + 2, 1); + delete [] na->last_usermask; + na->last_usermask = new char[strlen(common_get_vident(u)) + strlen(common_get_vhost(u)) + 2]; sprintf(na->last_usermask, "%s@%s", common_get_vident(u), common_get_vhost(u)); if (na->last_realname) - free(na->last_realname); + delete [] na->last_realname; na->last_realname = sstrdup(u->realname); } @@ -112,7 +110,7 @@ int do_identify(User * u) if (ircd->modeonreg) { len = strlen(ircd->modeonreg); strncpy(modes,ircd->modeonreg,512); - if(ircd->rootmodeonid && is_services_root(u)) { + if(ircd->rootmodeonid && is_services_root(u)) { strncat(modes,ircd->rootmodeonid,512-len); } else if(ircd->adminmodeonid && is_services_admin(u)) { strncat(modes,ircd->adminmodeonid,512-len); diff --git a/src/core/ns_list.c b/src/core/ns_list.c index f00160226..46863e209 100644 --- a/src/core/ns_list.c +++ b/src/core/ns_list.c @@ -109,13 +109,13 @@ int do_list(User * u) } for (s = tmp; *s; s++) { if (!isdigit(*s)) { - free(tmp); + delete [] tmp; notice_lang(s_ChanServ, u, LIST_INCORRECT_RANGE); return MOD_CONT; } } from = atoi(tmp); - free(tmp); + delete [] tmp; tmp = myStrGetTokenRemainder(pattern, '-', 1); /* Read TO out */ if (!tmp) { notice_lang(s_ChanServ, u, LIST_INCORRECT_RANGE); @@ -123,13 +123,13 @@ int do_list(User * u) } for (s = tmp; *s; s++) { if (!isdigit(*s)) { - free(tmp); + delete [] tmp; notice_lang(s_ChanServ, u, LIST_INCORRECT_RANGE); return MOD_CONT; } } to = atoi(tmp); - free(tmp); + delete [] tmp; pattern = sstrdup("*"); tofree = 1; } @@ -229,7 +229,7 @@ int do_list(User * u) nnicks > NSListMax ? NSListMax : nnicks, nnicks); } if (tofree) - free(pattern); + delete [] pattern; return MOD_CONT; } diff --git a/src/core/ns_register.c b/src/core/ns_register.c index 780101b98..692c21531 100644 --- a/src/core/ns_register.c +++ b/src/core/ns_register.c @@ -277,12 +277,16 @@ int do_confirm(User * u) if (stricmp(nr->passcode, passcode) != 0) { notice_lang(s_NickServ, u, NICK_CONFIRM_INVALID); + if (forced) + delete [] passcode; return MOD_CONT; } } if (!nr) { notice_lang(s_NickServ, u, NICK_REGISTRATION_FAILED); + if (forced) + delete [] passcode; return MOD_CONT; } @@ -314,9 +318,7 @@ int do_confirm(User * u) na->last_usermask = sstrdup("*@*"); na->last_realname = sstrdup("unknown"); } else { - na->last_usermask = - (char *)scalloc(strlen(common_get_vident(u)) + - strlen(common_get_vhost(u)) + 2, 1); + na->last_usermask = new char[strlen(common_get_vident(u)) + strlen(common_get_vhost(u)) + 2]; sprintf(na->last_usermask, "%s@%s", common_get_vident(u), common_get_vhost(u)); na->last_realname = sstrdup(u->realname); @@ -383,6 +385,11 @@ int do_confirm(User * u) if (NSNickTracking) nsStartNickTracking(u); + if (forced) + delete [] passcode; + if (email) + delete [] email; + return MOD_CONT; } @@ -390,7 +397,7 @@ NickRequest *makerequest(const char *nick) { NickRequest *nr; - nr = (NickRequest *)scalloc(1, sizeof(NickRequest)); + nr = new NickRequest; nr->nick = sstrdup(nick); insert_requestnick(nr); alog("%s: Nick %s has been requested", s_NickServ, nr->nick); @@ -412,7 +419,7 @@ NickAlias *makenick(const char *nick) alog("%s: group %s has been created", s_NickServ, nc->display); /* Then make the alias */ - na = (NickAlias *)scalloc(1, sizeof(NickAlias)); + na = new NickAlias; na->nick = sstrdup(nick); na->nc = nc; slist_add(&nc->aliases, na); diff --git a/src/core/ns_saset.c b/src/core/ns_saset.c index a1e922a4e..54fb2fc0f 100644 --- a/src/core/ns_saset.c +++ b/src/core/ns_saset.c @@ -241,7 +241,7 @@ int do_saset_password(User * u, NickCore * nc, char *param) int do_saset_url(User * u, NickCore * nc, char *param) { if (nc->url) - free(nc->url); + delete [] nc->url; if (param) { nc->url = sstrdup(param); @@ -274,7 +274,7 @@ int do_saset_email(User * u, NickCore * nc, char *param) (nc->email ? nc->email : "none")); if (nc->email) - free(nc->email); + delete [] nc->email; if (param) { nc->email = sstrdup(param); @@ -308,7 +308,7 @@ int do_saset_icq(User * u, NickCore * nc, char *param) int do_saset_greet(User * u, NickCore * nc, char *param) { if (nc->greet) - free(nc->greet); + delete [] nc->greet; if (param) { char buf[BUFSIZE]; diff --git a/src/core/ns_set.c b/src/core/ns_set.c index b6c91b281..4267f46b2 100644 --- a/src/core/ns_set.c +++ b/src/core/ns_set.c @@ -6,8 +6,8 @@ * Please read COPYING and README for further details. * * Based on the original code of Epona by Lara. - * Based on the original code of Services by Andy Church. - * + * Based on the original code of Services by Andy Church. + * * $Id$ * */ @@ -233,7 +233,7 @@ int do_set_language(User * u, NickCore * nc, char *param) int do_set_url(User * u, NickCore * nc, char *param) { if (nc->url) - free(nc->url); + delete [] nc->url; if (param) { nc->url = sstrdup(param); @@ -260,7 +260,7 @@ int do_set_email(User * u, NickCore * nc, char *param) (nc->email ? nc->email : "none"), (param ? param : "none")); if (nc->email) - free(nc->email); + delete [] nc->email; if (param) { nc->email = sstrdup(param); @@ -292,7 +292,7 @@ int do_set_icq(User * u, NickCore * nc, char *param) int do_set_greet(Us