diff options
79 files changed, 786 insertions, 835 deletions
diff --git a/include/extern.h b/include/extern.h index 8bc6c25a7..8c050d857 100644 --- a/include/extern.h +++ b/include/extern.h @@ -1016,8 +1016,6 @@ E int b64_decode(const char *src, char *target, size_t targsize); E const char* encode_ip(unsigned char *ip); E int decode_ip(const char *buf); -#define Anope_Free(x) if ((x) != NULL) free(x) - E char *host_resolve(char *host); E void event_process_hook(const char *name, int argc, char **argv); diff --git a/include/services.h b/include/services.h index f8e8334bf..0d2b98436 100644 --- a/include/services.h +++ b/include/services.h @@ -1282,7 +1282,7 @@ private: { char *s = normalizeBuffer(buf); send_cmd(ircd->ts6 ? bi->uid : bi->nick, "NOTICE %s :\1%s\1", dest, s); - free(s); + delete [] s; } virtual void SendNumericInternal(const char *source, int numeric, const char *dest, const char *buf) { @@ -1506,8 +1506,8 @@ struct Uplink { } ~Uplink() { - free(host); - free(password); + delete [] host; + delete [] password; } }; 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(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_update.c b/src/core/ns_update.c index 76794a86d..9c53886c1 100644 --- a/src/core/ns_update.c +++ b/src/core/ns_update.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$ * */ @@ -64,7 +64,7 @@ int do_nickupdate(User * u) do_setmodes(u); check_memos(u); if (na->last_realname) - free(na->last_realname); + delete [] na->last_realname; na->last_realname = sstrdup(u->realname); na->status |= NS_IDENTIFIED; na->last_seen = time(NULL); diff --git a/src/core/os_akill.c b/src/core/os_akill.c index c67433013..a85c50cb1 100644 --- a/src/core/os_akill.c +++ b/src/core/os_akill.c @@ -130,7 +130,7 @@ int do_akill(User * u) deleted = add_akill(u, mask, u->nick, expires, reason); if (deleted < 0) { if (AddAkiller) { - free(reason); + delete [] reason; } return MOD_CONT; } else if (deleted) { @@ -173,7 +173,7 @@ int do_akill(User * u) notice_lang(s_OperServ, u, READ_ONLY_MODE); } if (AddAkiller) { - free(reason); + delete [] reason; } } else { syntax_error(s_OperServ, u, "AKILL", OPER_AKILL_SYNTAX); diff --git a/src/core/os_chankill.c b/src/core/os_chankill.c index 881dee421..a69f1c6ec 100644 --- a/src/core/os_chankill.c +++ b/src/core/os_chankill.c @@ -111,7 +111,7 @@ int do_chankill(User * u) notice_lang(s_OperServ, u, CHAN_X_NOT_IN_USE, channel); } if (AddAkiller) { - free(reason); + delete [] reason; } } else { syntax_error(s_OperServ, u, "CHANKILL", OPER_CHANKILL_SYNTAX); diff --git a/src/core/os_kick.c b/src/core/os_kick.c index fd47318fe..26a2e7abc 100644 --- a/src/core/os_kick.c +++ b/src/core/os_kick.c @@ -80,9 +80,9 @@ int do_os_kick(User * u) argv[1] = sstrdup(nick); argv[2] = sstrdup(s); do_kick(s_OperServ, 3, argv); - free((void *)argv[2]); - free((void *)argv[1]); - free((void *)argv[0]); + delete [] argv[2]; + delete [] argv[1]; + delete [] argv[0]; return MOD_CONT; } diff --git a/src/core/os_logonnews.c b/src/core/os_logonnews.c index 0d26a543e..6588362de 100644 --- a/src/core/os_logonnews.c +++ b/src/core/os_logonnews.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$ * */ @@ -33,7 +33,7 @@ class OSLogonNews : public Module this->SetVersion("$Id$"); this->SetType(CORE); - /** + /** * For some unknown reason, do_logonnews is actaully defined in news.c * we can look at moving it here later **/ @@ -54,7 +54,7 @@ class OSLogonNews : public Module ~OSLogonNews() { - free(c->help_param1); + delete [] c->help_param1; } }; @@ -80,7 +80,7 @@ int reload_config(int argc, char **argv) { if (argc >= 1) { if (!stricmp(argv[0], EVENT_START)) { - free(c->help_param1); + delete [] c->help_param1; snprintf(buf, BUFSIZE, "%d", NewsCount), c->help_param1 = sstrdup(buf); } diff --git a/src/core/os_opernews.c b/src/core/os_opernews.c index 82fed8e76..69550267e 100644 --- a/src/core/os_opernews.c +++ b/src/core/os_opernews.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$ * */ @@ -50,7 +50,7 @@ class OSOperNews : public Module ~OSOperNews() { - free(c->help_param1); + delete [] c->help_param1; } }; @@ -74,7 +74,7 @@ int reload_config(int argc, char **argv) { if (argc >= 1) { if (!stricmp(argv[0], EVENT_START)) { - free(c->help_param1); + delete [] c->help_param1; snprintf(buf, BUFSIZE, "%d", NewsCount), c->help_param1 = sstrdup(buf); } diff --git a/src/core/os_quit.c b/src/core/os_quit.c index 019cf9617..a06bb6966 100644 --- a/src/core/os_quit.c +++ b/src/core/os_quit.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$ * */ @@ -55,7 +55,7 @@ void myOperServHelp(User * u) **/ int do_os_quit(User * u) { - quitmsg = (char *)calloc(28 + strlen(u->nick), 1); + quitmsg = new char[28 + strlen(u->nick)]; if (!quitmsg) quitmsg = "QUIT command received, but out of memory!"; else diff --git a/src/core/os_reload.c b/src/core/os_reload.c index 514fa42e7..9e4495ec4 100644 --- a/src/core/os_reload.c +++ b/src/core/os_reload.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$ * */ @@ -56,7 +56,7 @@ void myOperServHelp(User * u) int do_reload(User * u) { if (!read_config(1)) { - quitmsg = (char *)calloc(28 + strlen(u->nick), 1); + quitmsg = new char[28 + strlen(u->nick)]; if (!quitmsg) quitmsg = "Error during the reload of the configuration file, but out of memory!"; diff --git a/src/core/os_restart.c b/src/core/os_restart.c index e690de97e..fe0f8ddb7 100644 --- a/src/core/os_restart.c +++ b/src/core/os_restart.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$ * */ @@ -60,7 +60,7 @@ void myOperServHelp(User * u) int do_restart(User * u) { #ifdef SERVICES_BIN - quitmsg = (char *)calloc(31 + strlen(u->nick), 1); + quitmsg = new char[31 + strlen(u->nick)]; if (!quitmsg) quitmsg = "RESTART command received, but out of memory!"; else diff --git a/src/core/os_shutdown.c b/src/core/os_shutdown.c index 03099e410..32ab16141 100644 --- a/src/core/os_shutdown.c +++ b/src/core/os_shutdown.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$ * */ @@ -55,7 +55,7 @@ void myOperServHelp(User * u) **/ int do_shutdown(User * u) { - quitmsg = (char *)calloc(32 + strlen(u->nick), 1); + quitmsg = new char[32 + strlen(u->nick)]; if (!quitmsg) quitmsg = "SHUTDOWN command received, but out of memory!"; else diff --git a/src/datafiles.c b/src/datafiles.c index 5fcacf33e..d14e47343 100644 --- a/src/datafiles.c +++ b/src/datafiles.c @@ -80,7 +80,7 @@ static dbFILE *open_db_read(const char *service, const char *filename) dbFILE *f; FILE *fp; - f = (dbFILE *)scalloc(sizeof(*f), 1); + f = new dbFILE; if (!f) { log_perror("Can't read %s database %s", service, filename); if (time(NULL) - lastwarn > WarningTimeout) { @@ -104,7 +104,7 @@ static dbFILE *open_db_read(const char *service, const char *filename) strerror(errno)); lastwarn = time(NULL); } - free(f); + delete f; errno = errno_save; return NULL; } @@ -137,7 +137,7 @@ static dbFILE *open_db_write(const char *service, const char *filename, } #endif - f = (dbFILE *)scalloc(sizeof(*f), 1); + f = new dbFILE; if (!f) { log_perror("Can not read %s database %s", service, filename); return NULL; @@ -158,7 +158,7 @@ static dbFILE *open_db_write(const char *service, const char *filename, int errno_save = errno; alog("Opening %s database %s for write: Filename too long", service, filename); - free(f); + delete f; errno = errno_save; return NULL; } @@ -203,7 +203,7 @@ static dbFILE *open_db_write(const char *service, const char *filename, if (!NoBackupOkay) { if (f->backupfp) fclose(f->backupfp); - free(f); + delete f; errno = errno_save; return NULL; } @@ -244,7 +244,7 @@ static dbFILE *open_db_write(const char *service, const char *filename, /* Then the Lord said unto Moses, thou shalt free what thou hast malloced * -- codemastr */ - free(f); + delete f; errno = errno_save; return NULL; } @@ -331,7 +331,7 @@ void restore_db(dbFILE * f) fclose(f->fp); if (!errno_save) errno_save = errno; - free(f); + delete f; errno = errno_save; } @@ -356,7 +356,7 @@ void close_db(dbFILE * f) #endif } fclose(f->fp); - free(f); + delete f; } /*************************************************************************/ @@ -506,9 +506,9 @@ int read_string(char **ret, dbFILE * f) *ret = NULL; return 0; } - s = (char *)scalloc(len, 1); + s = new char[len]; if (len != fread(s, 1, len, f->fp)) { - free(s); + delete [] s; return -1; } *ret = s; diff --git a/src/events.c b/src/events.c index 237dbb9f3..1804f9260 100644 --- a/src/events.c +++ b/src/events.c @@ -31,7 +31,7 @@ void send_event(const char *name, int argc, ...) int idx = 0; char **argv; - argv = (char **) malloc(sizeof(char *) * argc); + argv = new char *[argc]; va_start(va, argc); for (idx = 0; idx < argc; idx++) { a = va_arg(va, char *); @@ -48,9 +48,9 @@ void send_event(const char *name, int argc, ...) * Now that the events have seen the message, free it up **/ for (idx = 0; idx < argc; idx++) { - free(argv[idx]); + delete [] argv[idx]; } - free(argv); + delete [] argv; } void event_process_hook(const char *name, int argc, char **argv) @@ -139,7 +139,7 @@ EvtHook *createEventHook(const char *name, int (*func) (int argc, char **argv)) if (!func) { return NULL; } - if ((evh = (EvtHook *)malloc(sizeof(EvtHook))) == NULL) { + if (!(evh = new EvtHook)) { fatal("Out of memory!"); } evh->name = sstrdup(name); @@ -205,7 +205,7 @@ int addEventHook(EvtHookHash * hookEvtTable[], EvtHook * evh) lastHash = current; } - if ((newHash = (EvtHookHash *)malloc(sizeof(EvtHookHash))) == NULL) { + if (!(newHash = new EvtHookHash)) { fatal("Out of memory"); } newHash->next = NULL; @@ -311,7 +311,7 @@ int delEventHook(EvtHookHash * hookEvtTable[], EvtHook * evh, } } else { hookEvtTable[index] = current->next; - free(current->name); + delete [] current->name; return MOD_ERR_OK; } } else { @@ -332,7 +332,7 @@ int delEventHook(EvtHookHash * hookEvtTable[], EvtHook * evh, } } else { lastHash->next = current->next; - free(current->name); + delete [] current->name; return MOD_ERR_OK; } } @@ -353,11 +353,11 @@ int destroyEventHook(EvtHook * evh) return MOD_ERR_PARAMS; } if (evh->name) { - free(evh->name); + delete [] evh->name; } evh->func = NULL; if (evh->mod_name) { - free(evh->mod_name); + delete [] evh->mod_name; } evh->next = NULL; return MOD_ERR_OK; diff --git a/src/hostserv.c b/src/hostserv.c index de3960273..93515fb04 100644 --- a/src/hostserv.c +++ b/src/hostserv.c @@ -38,7 +38,7 @@ void moduleAddHostServCmds(void) /** * Return information on memory use. - * Assumes pointers are valid. + * Assumes pointers are valid. **/ void get_hostserv_stats(long *nrec, long *memuse) @@ -129,16 +129,16 @@ HostCore *createHostCorelist(HostCore * next, char *nick, char *vIdent, char *vHost, const char *creator, int32 tmp_time) { - next = (HostCore *)malloc(sizeof(HostCore)); + next = new HostCore; if (next == NULL) { ircdproto->SendGlobops(s_HostServ, "Unable to allocate memory to create the vHost LL, problems i sense.."); } else { - next->nick = (char *)malloc(sizeof(char) * strlen(nick) + 1); - next->vHost = (char *)malloc(sizeof(char) * strlen(vHost) + 1); - next->creator = (char *)malloc(sizeof(char) * strlen(creator) + 1); + next->nick = new char[strlen(nick) + 1]; + next->vHost = new char[strlen(vHost) + 1]; + next->creator = new char[strlen(creator) + 1]; if (vIdent) - next->vIdent = (char *)malloc(sizeof(char) * strlen(vIdent) + 1); + next->vIdent = new char[strlen(vIdent) + 1]; if ((next->nick == NULL) || (next->vHost == NULL) || (next->creator == NULL)) { ircdproto->SendGlobops(s_HostServ, @@ -217,17 +217,17 @@ HostCore *insertHostCore(HostCore * phead, HostCore * prev, char *nick, return NULL; } - newCore = (HostCore *)malloc(sizeof(HostCore)); + newCore = new HostCore; if (newCore == NULL) { ircdproto->SendGlobops(s_HostServ, "Unable to allocate memory to insert into the vHost LL, problems i sense.."); return NULL; } else { - newCore->nick = (char *)malloc(sizeof(char) * strlen(nick) + 1); - newCore->vHost = (char *)malloc(sizeof(char) * strlen(vHost) + 1); - newCore->creator = (char *)malloc(sizeof(char) * strlen(creator) + 1); + newCore->nick = new char[strlen(nick) + 1]; + newCore->vHost = new char[strlen(vHost) + 1]; + newCore->creator = new char[strlen(creator) + 1]; if (vIdent) - newCore->vIdent = (char *)malloc(sizeof(char) * strlen(vIdent) + 1); + newCore->vIdent = new char[strlen(vIdent) + 1]; if ((newCore->nick == NULL) || (newCore->vHost == NULL) || (newCore->creator == NULL)) { ircdproto->SendGlobops(s_HostServ, @@ -274,13 +274,13 @@ HostCore *deleteHostCore(HostCore * phead, HostCore * prev) tmp = prev->next; prev->next = tmp->next; } - free(tmp->vHost); - free(tmp->nick); - free(tmp->creator); + delete [] tmp->vHost; + delete [] tmp->nick; + delete [] tmp->creator; if (tmp->vIdent) { - free(tmp->vIdent); + delete [] tmp->vIdent; } - free(tmp); + delete tmp; return phead; } @@ -404,10 +404,10 @@ void load_hs_dbase(dbFILE * f) SAFE(read_string(&creator, f)); SAFE(read_int32(&time, f)); addHostCore(nick, vIdent, vHost, creator, time); /* could get a speed increase by not searching the list */ - free(nick); /* as we know the db is in alphabetical order... */ - free(vHost); - free(creator); - free(vIdent); + delete [] nick; /* as we know the db is in alphabetical order... */ + delete [] vHost; + delete [] creator; + delete [] vIdent; } else { fatal("Invalid format in %s %d", HostDBName, c); } @@ -539,11 +539,9 @@ int is_host_remover(User * u) void set_lastmask(User * u) { if (u->na->last_usermask) - free(u->na->last_usermask); + delete [] u->na->last_usermask; - u->na->last_usermask = - (char *)smalloc(strlen(common_get_vident(u)) + - strlen(common_get_vhost(u)) + 2); + u->na->last_usermask = new char[strlen(common_get_vident(u)) + strlen(common_get_vhost(u)) + 2]; sprintf(u->na->last_usermask, "%s@%s", common_get_vident(u), common_get_vhost(u)); diff --git a/src/init.c b/src/init.c index e9042adeb..d6122fa3e 100644 --- a/src/init.c +++ b/src/init.c @@ -430,7 +430,7 @@ int init_secondary(int ac, char **av) alog("%s is not a supported version of Windows", winver); - free(winver); + delete [] winver; return -1; diff --git a/src/language.c b/src/language.c index e99dc0862..4e869191a 100644 --- a/src/language.c +++ b/src/language.c @@ -6,9 +6,9 @@ * 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. - * - * $Id$ + * Based on the original code of Services by Andy Church. + * + * $Id$ * */ @@ -88,7 +88,7 @@ static void load_lang(int index, const char *filename) alog("Warning: Bad number of strings (%d, wanted %d) " "for language %d (%s)", num, NUM_STRINGS, index, filename); } - langtexts[index] = (char **)scalloc(sizeof(char *), NUM_STRINGS); + langtexts[index] = new char *[NUM_STRINGS]; if (num > NUM_STRINGS) num = NUM_STRINGS; for (i = 0; i < num; i++) { @@ -99,9 +99,9 @@ static void load_lang(int index, const char *filename) i, index, filename); while (--i >= 0) { if (langtexts[index][i]) - free(langtexts[index][i]); + delete [] langtexts[index][i]; } - free(langtexts[index]); + delete [] langtexts[index]; langtexts[index] = NULL; return; } @@ -112,9 +112,9 @@ static void load_lang(int index, const char *filename) "corrupt TOC?", i, index, filename); while (--i >= 0) { if (langtexts[index][i]) - free(langtexts[index][i]); + delete [] langtexts[index][i]; } - free(langtexts[index]); + delete [] langtexts[index]; langtexts[index] = NULL; return; } else if (len < 0) { @@ -122,22 +122,22 @@ static void load_lang(int index, const char *filename) "corrupt TOC?", i, index, filename); while (--i >= 0) { if (langtexts[index][i]) - free(langtexts[index][i]); + delete [] langtexts[index][i]; } - free(langtexts[index]); + delete [] langtexts[index]; langtexts[index] = NULL; return; } else { - langtexts[index][i] = (char *)scalloc(len + 1, 1); + langtexts[index][i] = new char[len + 1]; fseek(f, pos, SEEK_SET); if (fread(langtexts[index][i], 1, len, f) != len) { alog("Failed to read string %d in language %d (%s)", i, index, filename); while (--i >= 0) { if (langtexts[index][i]) - free(langtexts[index][i]); + delete [] langtexts[index][i]; } - free(langtexts[index]); + delete [] langtexts[index]; langtexts[index] = NULL; return; } @@ -167,7 +167,7 @@ void lang_sanitize() strnrepl(tmp, sizeof(tmp), "%R", "/msg "); } newstr = sstrdup(tmp); - free(langtexts[i][j]); + delete [] langtexts[i][j]; langtexts[i][j] = newstr; } } diff --git a/src/mail.c b/src/mail.c index 4aa3b0a2a..005ac97ab 100644 --- a/src/mail.c +++ b/src/mail.c @@ -45,13 +45,13 @@ MailInfo *MailRegBegin(User * u, NickRequest * nr, char *subject, } else { MailInfo *mail; - mail = (MailInfo *)scalloc(sizeof(MailInfo), 1); + mail = new MailInfo; mail->sender = u; mail->recipient = NULL; mail->recip = nr; if (!(mail->pipe = popen(SendMailPath, "w"))) { - free(mail); + delete mail; notice_lang(service, u, MAIL_LATER); return NULL; } @@ -98,13 +98,13 @@ MailInfo *MailBegin(User * u, NickCore * nc, char *subject, char *service) } else { MailInfo *mail; - mail = (MailInfo *)scalloc(sizeof(MailInfo), 1); + mail = new MailInfo; mail->sender = u; mail->recipient = nc; mail->recip = NULL; if (!(mail->pipe = popen(SendMailPath, "w"))) { - free(mail); + delete mail; notice_lang(service, u, MAIL_LATER); return NULL; } @@ -143,13 +143,13 @@ MailInfo *MailMemoBegin(NickCore * nc) } else { MailInfo *mail; - mail = (MailInfo *)scalloc(sizeof(MailInfo), 1); + mail = new MailInfo; mail->sender = NULL; mail->recipient = nc; mail->recip = NULL; if (!(mail->pipe = popen(SendMailPath, "w"))) { - free(mail); + delete mail; return NULL; } @@ -199,7 +199,7 @@ void MailEnd(MailInfo * mail) mail->recip->lastmail = time(NULL); - free(mail); + delete mail; } /*************************************************************************/ diff --git a/src/main.c b/src/main.c index ff4968ed3..59c63c1fc 100644 --- a/src/main.c +++ b/src/main.c @@ -226,10 +226,12 @@ static void services_shutdown(void) alog("%s", quitmsg); if (started) { ircdproto->SendSquit(ServerName, quitmsg); - Anope_Free(uplink); - Anope_Free(mod_current_buffer); + if (uplink) + delete [] uplink; + if (mod_current_buffer) + delete [] mod_current_buffer; if (ircd->chanmodes) { - Anope_Free(ircd->chanmodes); + delete [] ircd->chanmodes; } u = firstuser(); while (u) { @@ -413,7 +415,7 @@ void sighandler(int signum) #ifndef _WIN32 signum == SIGUSR1 || #endif - !(quitmsg = (const char *)calloc(BUFSIZE, 1))) { + !(quitmsg = new char[BUFSIZE])) { quitmsg = "Out of memory!"; } else { snprintf((char *)quitmsg, BUFSIZE, "Services terminating on signal %d", signum); @@ -472,7 +474,7 @@ int main(int ac, char **av, char **envp) * This fixes bug #589. * -- heinz */ - binary_dir = smalloc(MAX_PATH); + binary_dir = new char[MAX_PATH]; if (!getcwd(binary_dir, MAX_PATH)) { fprintf(stderr, "error: getcwd() error\n"); return -1; @@ -558,7 +560,7 @@ int main(int ac, char **av, char **envp) process(); } else if (i == 0) { int errno_save = errno; - quitmsg = (const char *)scalloc(BUFSIZE, 1); + quitmsg = new char[BUFSIZE]; if (quitmsg) { // Naughty, but oh well. :) snprintf((char *)quitmsg, BUFSIZE, @@ -610,7 +612,7 @@ int main(int ac, char **av, char **envp) #ifdef _WIN32 if (binary_dir) - free(binary_dir); + delete [] binary_dir; #endif return 0; @@ -647,7 +649,7 @@ void do_backtrace(int show_segheader) char *winver; winver = GetWindowsVersion(); alog("Backtrace: not available on Windows"); - alog("Running %S", winver); - free(winver); + alog("Running %s", winver); + delete [] winver; #endif } diff --git a/src/memory.c b/src/memory.c index 30fe46627..cf928021b 100644 --- a/src/memory.c +++ b/src/memory.c @@ -6,9 +6,9 @@ * 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. - * - * $Id$ + * Based on the original code of Services by Andy Church. + * + * $Id$ * */ @@ -107,19 +107,14 @@ char *sstrdup(const char *src) { char *ret = NULL; if (src) { -#ifdef __STRICT_ANSI__ - if ((ret = (char *) malloc(strlen(src) + 1))) {; - strcpy(ret, src); - } -#else - ret = strdup(src); -#endif + ret = new char[strlen(src) + 1]; if (!ret) #ifndef _WIN32 raise(SIGUSR1); #else abort(); #endif + strcpy(ret, src); } else { alog("sstrdup() called with NULL-arg"); if (debug) diff --git a/src/memoserv.c b/src/memoserv.c index d9bd61b93..35c433e4d 100644 --- a/src/memoserv.c +++ b/src/memoserv.c @@ -345,7 +345,7 @@ int delmemo(MemoInfo * mi, int num) break; } if (i < mi->memocount) { - free(mi->memos[i].text); /* Deallocate memo text memory */ + delete [] mi->memos[i].text; /* Deallocate memo text memory */ mi->memocount--; /* One less memo now */ if (i < mi->memocount) /* Move remaining memos down a slot */ memmove(mi->memos + i, mi->memos + i + 1, diff --git a/src/misc.c b/src/misc.c index 77eee30cc..437d9ece4 100644 --- a/src/misc.c +++ b/src/misc.c @@ -777,7 +777,7 @@ char *myStrSubString(const char *src, int start, int end) } len = strlen(src); if (((start >= 0) && (end <= len)) && (end > start)) { - substring = (char *) malloc(sizeof(char) * ((end - start) + 1)); + substring = new char[(end - start) + 1]; for (idx = 0; idx <= end - start; idx++) { substring[idx] = src[start + idx]; } @@ -865,7 +865,7 @@ int nickIsServices(const char *tempnick, int bot) if (s) { *s++ = 0; if (stricmp(s, ServerName) != 0) { - free(nick); + delete [] nick; return found; } } @@ -900,7 +900,7 @@ int nickIsServices(const char *tempnick, int bot) } /* Somehow, something tells me we should free this :) -GD */ - free(nick); + delete [] nick; return found; } @@ -1328,7 +1328,7 @@ char *GetWindowsVersion(void) snprintf(buf, sizeof(buf), "Microsoft Windows Server 2008 %s%s", cputype, extra); } - free(extra); + delete [] extra; } /* Windows 2003 or Windows XP Pro 64 */ if (osvi.dwMajorVersion == 5 && osvi.dwMinorVersion == 2) { @@ -1350,7 +1350,7 @@ char *GetWindowsVersion(void) snprintf(buf, sizeof(buf), "Microsoft Windows Server 2003 Family %s%s", cputype, extra); } - free(extra); + delete [] extra; } if (osvi.dwMajorVersion == 5 && osvi.dwMinorVersion == 1) { if (osvi.wSuiteMask & VER_SUITE_EMBEDDEDNT) { @@ -1361,7 +1361,7 @@ char *GetWindowsVersion(void) extra = sstrdup(" "); } snprintf(buf, sizeof(buf), "Microsoft Windows XP %s", extra); - free(extra); + delete [] extra; } if (osvi.dwMajorVersion == 5 && osvi.dwMinorVersion == 0) { if (osvi.wSuiteMask & VER_SUITE_DATACENTER) { @@ -1372,7 +1372,7 @@ char *GetWindowsVersion(void) extra = sstrdup("Server"); } snprintf(buf, sizeof(buf), "Microsoft Windows 2000 %s", extra); - free(extra); + delete [] extra; } if (osvi.dwMajorVersion <= 4) { if (osvi.wSuiteMask & VER_SUITE_ENTERPRISE) { @@ -1381,7 +1381,7 @@ char *GetWindowsVersion(void) extra = sstrdup("Server 4.0"); } snprintf(buf, sizeof(buf), "Microsoft Windows NT %s", extra); - free(extra); + delete [] extra; } case VER_PLATFORM_WIN32_WINDOWS: if (osvi.dwMajorVersion == 4 && osvi.dwMinorVersion == 0) { @@ -1391,7 +1391,7 @@ char *GetWindowsVersion(void) extra = sstrdup(" "); } snprintf(buf, sizeof(buf), "Microsoft Windows 95 %s", extra); - free(extra); + delete [] extra; } if (osvi.dwMajorVersion == 4 && osvi.dwMinorVersion == 10) { if (osvi.szCSDVersion[1] == 'A') { @@ -1400,14 +1400,14 @@ char *GetWindowsVersion(void) extra = sstrdup(" "); } snprintf(buf, sizeof(buf), "Microsoft Windows 98 %s", extra); - free(extra); + delete [] extra; } if (osvi.dwMajorVersion == 4 && osvi.dwMinorVersion == 90) { snprintf(buf, sizeof(buf), "Microsoft Windows Millennium Edition"); } } - free(cputype); + delete [] cputype; return sstrdup(buf); } diff --git a/src/module.cpp b/src/module.cpp index de72c7f64..2df2aaa58 100644 --- a/src/module.cpp +++ b/src/module.cpp @@ -45,7 +45,7 @@ Module::Module(const std::string &mname, const std::string &creator) lastHash = current; } - if ((newHash = (ModuleHash *)malloc(sizeof(ModuleHash))) == NULL) { + if (!(newHash = new ModuleHash)) { fatal("Out of memory"); } this->created = time(NULL); @@ -164,8 +164,8 @@ Module::~Module() } else { lastHash->next = mhash->next; } - free(mhash->name); - free(mhash); + delete [] mhash->name; + delete mhash; } lastHash = mhash; } diff --git a/src/modules.c b/src/modules.c index 492745497..9ce2f8853 100644 --- a/src/modules.c +++ b/src/modules.c @@ -160,8 +160,7 @@ void Module::InsertLanguage(int langNumber, int ac, const char **av) } this->lang[langNumber].argc = ac; - this->lang[langNumber].argv = - (char **)malloc(sizeof(char *) * ac); + this->lang[langNumber].argv = new char *[ac]; for (i = 0; i < ac; i++) { this->lang[langNumber].argv[i] = sstrdup(av[i]); } @@ -215,7 +214,7 @@ Command *createCommand(const char *name, int (*func) (User * u), return NULL; } - if ((c = (Command *)malloc(sizeof(Command))) == NULL) { + if (!(c = new Command)) { fatal("Out of memory!"); } c->name = sstrdup(name); @@ -255,7 +254,7 @@ int destroyCommand(Command * c) return MOD_ERR_UNKNOWN; } if (c->name) { - free(c->name); + delete [] c->name; } c->routine = NULL; c->has_priv = NULL; @@ -264,26 +263,14 @@ int destroyCommand(Command * c) c->helpmsg_oper = -1; c->helpmsg_admin = -1; c->helpmsg_root = -1; - if (c->help_param1) { - free(c->help_param1); - } - if (c->help_param2) { - free(c->help_param2); - } - if (c->help_param3) { - free(c->help_param3); - } - if (c->help_param4) { - free(c->help_param4); - } if (c->mod_name) { - free(c->mod_name); + delete [] c->mod_name; } if (c->service) { - free(c->service); + delete [] c->service; } c->next = NULL; - free(c); + delete c; return MOD_ERR_OK; } @@ -342,7 +329,7 @@ static int internal_addCommand(Module *m, CommandHash * cmdTable[], Command * c, lastHash = current; } - if ((newHash = (CommandHash *)malloc(sizeof(CommandHash))) == NULL) { + if (!(newHash = new CommandHash)) { fatal("Out of memory"); } newHash->next = NULL; @@ -462,7 +449,7 @@ static int internal_delCommand(CommandHash * cmdTable[], Command * c, const char } } else { cmdTable[index] = current->next; - free(current->name); + delete [] current->name; return MOD_ERR_OK; } } else { @@ -483,7 +470,7 @@ static int internal_delCommand(CommandHash * cmdTable[], Command * c, const char } } else { lastHash->next = current->next; - free(current->name); + delete [] current->name; return MOD_ERR_OK; } } @@ -562,7 +549,7 @@ Message *createMessage(const char *name, if (!name || !func) { return NULL; } - if ((m = (Message *)malloc(sizeof(Message))) == NULL) { + if (!(m = new Message)) { fatal("Out of memory!"); } m->name = sstrdup(name); @@ -645,7 +632,7 @@ int addMessage(MessageHash * msgTable[], Message * m, int pos) lastHash = current; } - if ((newHash = (MessageHash *)malloc(sizeof(MessageHash))) == NULL) { + if (!(newHash = new MessageHash)) { fatal("Out of memory"); } newHash->next = NULL; @@ -710,7 +697,7 @@ int delMessage(MessageHash * msgTable[], Message * m) } } else { msgTable[index] = current->next; - free(current->name); + delete [] current->name; return MOD_ERR_OK; } } else { @@ -728,7 +715,7 @@ int delMessage(MessageHash * msgTable[], Message * m) } } else { lastHash->next = current->next; - free(current->name); + delete [] current->name; return MOD_ERR_OK; } } @@ -749,7 +736,7 @@ int destroyMessage(Message * m) return MOD_ERR_PARAMS; } if (m->name) { - free(m->name); + delete [] m->name; } m->func = NULL; m->next = NULL; @@ -766,7 +753,7 @@ int Module::AddCallback(const char *name, time_t when, { ModuleCallBack *newcb, *tmp, *prev; int i; - newcb = (ModuleCallBack *)malloc(sizeof(ModuleCallBack)); + newcb = new ModuleCallBack; if (!newcb) return MOD_ERR_MEMORY; @@ -778,7 +765,7 @@ int Module::AddCallback(const char *name, time_t when, newcb->owner_name = sstrdup(this->name.c_str()); newcb->func = func; newcb->argc = argc; - newcb->argv = (char **)malloc(sizeof(char *) * argc); + newcb->argv = new char *[argc]; for (i = 0; i < argc; i++) { newcb->argv[i] = sstrdup(argv[i]); } @@ -823,16 +810,17 @@ void moduleCallBackDeleteEntry(ModuleCallBack * prev) prev->next = tmp->next; } if (tmp->name) - free(tmp->name); + delete [] tmp->name; if (tmp->owner_name) - free(tmp->owner_name); + delete [] tmp->owner_name; tmp->func = NULL; for (i = 0; i < tmp->argc; i++) { - free(tmp->argv[i]); + delete [] tmp->argv[i]; } + delete [] tmp->argv; tmp->argc = 0; tmp->next = NULL; - free(tmp); + delete tmp; } /** @@ -1270,7 +1258,7 @@ void moduleNoticeLang(char *source, User * u, int number, ...) strscpy(outbuf, t, sizeof(outbuf)); notice_user(source, u, "%s", outbuf); } - free(buf); + delete [] buf; } else { alog("%s: INVALID language string call, language: [%d], String [%d]", mod_current_module->name.c_str(), lang, number); } @@ -1321,7 +1309,7 @@ void moduleDeleteLanguage(int langNumber) mod_current_module = findModule(mod_current_module_name); } for (idx = 0; idx > mod_current_module->lang[langNumber].argc; idx++) { - free(mod_current_module->lang[langNumber].argv[idx]); + delete [] mod_current_module->lang[langNumber].argv[idx]; } mod_current_module->lang[langNumber].argc = 0; } diff --git a/src/modules/bs_fantasy_unban.c b/src/modules/bs_fantasy_unban.c index 88920176a..f28e66233 100644 --- a/src/modules/bs_fantasy_unban.c +++ b/src/modules/bs_fantasy_unban.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,7 +62,7 @@ int do_fantasy(int argc, char **argv) common_unban(ci, target); /* free target if needed (#852) */ - Anope_Free(target); + if (target) delete [] target; } return MOD_CONT; diff --git a/src/modules/cs_appendtopic.c b/src/modules/cs_appendtopic.c index 0e4ba12f8..01b7dc544 100644 --- a/src/modules/cs_appendtopic.c +++ b/src/modules/cs_appendtopic.c @@ -191,7 +191,7 @@ int my_cs_appendtopic(User * u) if (ci->last_topic) { snprintf(topic, sizeof(topic), "%s %s", ci->last_topic, newtopic); - free(ci->last_topic); + delete [] ci->last_topic; } else { strscpy(topic, newtopic, sizeof(topic)); } @@ -201,7 +201,7 @@ int my_cs_appendtopic(User * u) 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) @@ -225,6 +225,8 @@ int my_cs_appendtopic(User * u) } } } + if (newtopic) delete [] newtopic; + if (chan) delete [] chan; return MOD_CONT; } diff --git a/src/modules/cs_enforce.c b/src/modules/cs_enforce.c index 7d66bcb1a..9b36e966e 100644 --- a/src/modules/cs_enforce.c +++ b/src/modules/cs_enforce.c @@ -440,8 +440,8 @@ int my_cs_enforce(User * u) } } - if(chan) free(chan); - if(what) free(what); + if(chan) delete [] chan; + if(what) delete [] what; return MOD_CONT; } diff --git a/src/modules/cs_tban.c b/src/modules/cs_tban.c index 871b610ff..d402b952e 100644 --- a/src/modules/cs_tban.c +++ b/src/modules/cs_tban.c @@ -175,11 +175,11 @@ int do_tban(User * u) myFullHelpSyntax(u); } if (time) - free(time); + delete [] time; if (nick) - free(nick); + delete [] nick; if (chan) - free(chan); + delete [] chan; return MOD_CONT; } diff --git a/src/modules/hs_request.c b/src/modules/hs_request.c index 5eb7cc7f3..0c6e8966b 100644 --- a/src/modules/hs_request.c +++ b/src/modules/hs_request.c @@ -393,7 +393,7 @@ class HSRequest : public Module while (hs_request_head) hs_request_head = deleteHostCore(hs_request_head, NULL); - free(HSRequestDBName); + delete [] HSRequestDBName; } }; @@ -416,7 +416,7 @@ int hs_do_request(User * u) if (!nick || !rawhostmask) { if (rawhostmask) - free(rawhostmask); + delete [] rawhostmask; moduleNoticeLang(s_HostServ, u, LNG_REQUEST_SYNTAX); return MOD_CONT; } @@ -426,28 +426,28 @@ int hs_do_request(User * u) rawhostmask = myStrGetTokenRemainder(rawhostmask, '@', 1); /* get the remaining string */ if (!rawhostmask) { moduleNoticeLang(s_HostServ, u, LNG_REQUEST_SYNTAX); - free(vIdent); + delete [] vIdent; return MOD_CONT; } if (strlen(vIdent) > USERMAX - 1) { notice_lang(s_HostServ, u, HOST_SET_IDENTTOOLONG, USERMAX); - free(vIdent); - free(rawhostmask); + delete [] vIdent; + delete [] rawhostmask; return MOD_CONT; } else { for (s = vIdent; *s; s++) { if (!my_isvalidchar(*s)) { notice_lang(s_HostServ, u, HOST_SET_IDENT_ERROR); - free(vIdent); - free(rawhostmask); + delete [] vIdent; + delete [] rawhostmask; return MOD_CONT; } } } if (!ircd->vident) { notice_lang(s_HostServ, u, HOST_NO_VIDENT); - free(vIdent); - free(rawhostmask); + delete [] vIdent; + delete [] rawhostmask; return MOD_CONT; } } @@ -456,16 +456,16 @@ int hs_do_request(User * u) } else { notice_lang(s_HostServ, u, HOST_SET_TOOLONG, HOSTMAX); if (vIdent) - free(vIdent); - free(rawhostmask); + delete [] vIdent; + delete [] rawhostmask; 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; return MOD_CONT; } @@ -478,8 +478,8 @@ int hs_do_request(User * u) MSSendDelay); u->lastmemosend = now; if (vIdent) - free(vIdent); - free(rawhostmask); + delete [] vIdent; + delete [] rawhostmask; return MOD_CONT; } } @@ -493,8 +493,8 @@ int hs_do_request(User * u) } if (vIdent) - free(vIdent); - free(rawhostmask); + delete [] vIdent; + delete [] rawhostmask; return MOD_CONT; } @@ -540,7 +540,7 @@ void my_memo_lang(User * u, char *name, int z, int number, ...) va_end(va); memo_send(u, name, buffer, z); } - free(buf); + delete [] buf; } else { alog("%s: INVALID language string call, language: [%d], String [%d]", mod_current_module->name.c_str(), lang, number); } @@ -605,7 +605,7 @@ int hs_do_reject(User * u) if (!nick) { moduleNoticeLang(s_HostServ, u, LNG_REJECT_SYNTAX); if (reason) - free(reason); + delete [] reason; return MOD_CONT; } @@ -632,9 +632,9 @@ int hs_do_reject(User * u) moduleNoticeLang(s_HostServ, u, LNG_NO_REQUEST, nick); } - free(nick); + delete [] nick; if (reason) - free(reason); + delete [] reason; return MOD_CONT; } @@ -680,7 +680,7 @@ int hs_do_activate(User * u) moduleNoticeLang(s_HostServ, u, LNG_ACTIVATE_SYNTAX); } - free(nick); + delete [] nick; return MOD_CONT; } @@ -861,7 +861,7 @@ void hsreq_load_db(void) tmp = myStrGetToken(buf, ':', 3); if (tmp) { tmp_time = strtol(tmp, (char **) NULL, 16); - free(tmp); + delete [] tmp; } else { tmp_time = 0; } @@ -871,17 +871,17 @@ void hsreq_load_db(void) continue; } if (stricmp(vident, "(null)") == 0) { - free(vident); + delete [] vident; vident = NULL; } my_add_host_request(nick, vident, vhost, creator, tmp_time); - free(nick); - free(vhost); - free(creator); + delete [] nick; + delete [] vhost; + delete [] creator; if (vident) - free(vident); + delete [] vident; } - free(buf); + delete [] buf; } fclose(fp); @@ -952,7 +952,7 @@ void my_load_config(void) std::string tmp = config.ReadValue("hs_request", "database", HSREQ_DEFAULT_DBNAME, 0); if (HSRequestDBName) - free(HSRequestDBName); + delete [] HSRequestDBName; HSRequestDBName = sstrdup(tmp.c_str()); if (debug) diff --git a/src/modules/ns_maxemail.c b/src/modules/ns_maxemail.c index 29773dfe5..54a1494fa 100644 --- a/src/modules/ns_maxemail.c +++ b/src/modules/ns_maxemail.c @@ -154,7 +154,7 @@ int my_ns_register(User * u) return MOD_CONT; ret = check_email_limit_reached(email, u); - free(email); + delete [] email; return ret; } @@ -173,17 +173,17 @@ int my_ns_set(User * u) return MOD_CONT; if (stricmp(set, "email") != 0) { - free(set); + delete [] set; return MOD_CONT; } - free(set); + delete [] set; email = myStrGetToken(cur_buffer, ' ', 1); if (!email) return MOD_CONT; ret = check_email_limit_reached(email, u); - free(email); + delete [] email; return ret; } diff --git a/src/modules/ns_noop_convert.c b/src/modules/ns_noop_convert.c index bc9a59d02..58513ef44 100644 --- a/src/modules/ns_noop_convert.c +++ b/src/modules/ns_noop_convert.c @@ -82,7 +82,7 @@ class NSNOOPConvert : public Module ~NSNOOPConvert() { if (NSAutoOPDBName) - free(NSAutoOPDBName); + delete [] NSAutoOPDBName; } }; @@ -117,7 +117,7 @@ int mLoadData(void) if ((na = findnick(name))) { na->nc->flags |= NI_AUTOOP; } - free(name); + delete [] name; } } } @@ -136,7 +136,7 @@ int mLoadConfig(int argc, char **argv) std::string tmp = config.ReadValue("ns_noop_convert", "database", DEFAULT_DB_NAME, 0); if (NSAutoOPDBName) - free(NSAutoOPDBName); + delete [] NSAutoOPDBName; NSAutoOPDBName = sstrdup(tmp.c_str()); diff --git a/src/modules/os_ignore_db.c b/src/modules/os_ignore_db.c index 2984b3b20..55387fac3 100644 --- a/src/modules/os_ignore_db.c +++ b/src/modules/os_ignore_db.c @@ -111,7 +111,7 @@ class OSIgnoreDB : public Module save_ignore_db();
if (IgnoreDB)
- free(IgnoreDB);
+ delete [] IgnoreDB;
}
};
@@ -125,7 +125,7 @@ void load_config(void) { std::string tmp = config.ReadValue("os_ignore", "database", DefIgnoreDB, 0);
if (IgnoreDB)
- free(IgnoreDB);
+ delete [] IgnoreDB;
IgnoreDB = sstrdup(tmp.c_str());
if (debug)
@@ -174,7 +174,7 @@ int backup_ignoredb(int argc, char **argv) { **************************************************************************/
void load_ignore_db(void) {
- DBFile *dbptr = (DBFile *)scalloc(1, sizeof(DBFile));
+ DBFile *dbptr = new DBFile;
char *key, *value, *mask = NULL;
int retval = 0;
time_t expiry_time;
@@ -188,7 +188,7 @@ void load_ignore_db(void) { /* Open the db, fill the rest of dbptr and allocate memory for key and value */
if (new_open_db_read(dbptr, &key, &value)) {
- free(dbptr);
+ delete dbptr;
return; /* Bang, an error occurred */
}
@@ -198,12 +198,12 @@ void load_ignore_db(void) { if (retval == DB_READ_ERROR) {
new_close_db(dbptr->fptr, &key, &value);
- free(dbptr);
+ delete dbptr;
return;
} else if (retval == DB_EOF_ERROR) {
new_close_db(dbptr->fptr, &key, &value);
- free(dbptr);
+ delete dbptr;
return;
} else if (retval == DB_READ_BLOCKEND) { /* DB_READ_BLOCKEND */
/* Check if we have everything to add the ignore..
@@ -216,7 +216,7 @@ void load_ignore_db(void) { if (!ign) {
/* Create a fresh entry.. */
- ign = (IgnoreData *)scalloc(sizeof(*ign), 1);
+ ign = new IgnoreData;
ign->mask = (char *)sstrdup(mask);
ign->time = expiry_time;
ign->prev = NULL;
@@ -236,7 +236,7 @@ void load_ignore_db(void) { }
}
- if (mask) free(mask);
+ if (mask) delete [] mask;
mask = NULL;
expiry_time = time(NULL);
} else { /* DB_READ_SUCCESS */
@@ -246,7 +246,7 @@ void load_ignore_db(void) { /* mask */
if (!stricmp(key, "m")) {
if (mask)
- free(mask);
+ delete [] mask;
mask = sstrdup(value);
/* expiry time */
@@ -263,12 +263,12 @@ void load_ignore_db(void) { } /* else */
} /* while */
- free(dbptr);
+ delete dbptr;
}
void save_ignore_db(void) {
- DBFile *dbptr = (DBFile *)scalloc(1, sizeof(DBFile));
+ DBFile *dbptr = new DBFile;
time_t now;
IgnoreData *ign, *next;
@@ -280,7 +280,7 @@ void save_ignore_db(void) { if (new_open_db_write(dbptr)) {
rename(dbptr->temp_name, IgnoreDB);
- free(dbptr);
+ delete dbptr;
return; /* Bang, an error occurred */
}
@@ -303,8 +303,8 @@ void save_ignore_db(void) { ignore = ign->next;
if (ign->next)
ign->next->prev = ign->prev;
- free(ign->mask);
- free(ign);
+ delete [] ign->mask;
+ delete ign;
ign = NULL;
} else {
new_write_db_entry("m", dbptr, "%s", ign->mask);
@@ -316,7 +316,7 @@ void save_ignore_db(void) { if (dbptr) {
new_close_db(dbptr->fptr, NULL, NULL); /* close file */
remove(dbptr->temp_name); /* saved successfully, no need to keep the old one */
- free(dbptr); /* free the db struct */
+ delete dbptr; /* free the db struct */
}
}
@@ -329,17 +329,17 @@ void save_ignore_db(void) { int new_open_db_read(DBFile *dbptr, char **key, char **value) {
- *key = (char *)malloc(MAXKEYLEN);
- *value = (char *)malloc(MAXVALLEN);
+ *key = new char [MAXKEYLEN];
+ *value = new char [MAXVALLEN];
if (!(dbptr->fptr = fopen(dbptr->filename, "rb"))) {
if (debug) {
alog("debug: Can't read %s database %s : errno(%d)", dbptr->service,
dbptr->filename, errno);
}
- free(*key);
+ delete [] *key;
*key = NULL;
- free(*value);
+ delete [] *value;
*value = NULL;
return DB_READ_ERROR;
}
@@ -350,9 +350,9 @@ int new_open_db_read(DBFile *dbptr, char **key, char **value) { if (debug) {
alog("debug: Error reading version number on %s", dbptr->filename);
}
- free(*key);
+ delete [] *key;
*key = NULL;
- free(*value);
+ delete [] *value;
*value = NULL;
return DB_READ_ERROR;
} else if (feof(dbptr->fptr)) {
@@ -360,18 +360,18 @@ int new_open_db_read(DBFile *dbptr, char **key, char **value) { alog("debug: Error reading version number on %s: End of file detected",
dbptr->filename);
}
- free(*key);
+ delete [] *key;
*key = NULL;
- free(*value);
+ delete [] *value;
*value = NULL;
return DB_EOF_ERROR;
} else if (dbptr->db_version < 1) {
if (debug) {
alog("debug: Invalid version number (%d) on %s", dbptr->db_version, dbptr->filename);
}
- free(*key);
+ delete [] *key;
*key = NULL;
- free(*value);
+ delete [] *value;
*value = NULL;
return DB_VERSION_ERROR;
}
@@ -402,11 +402,11 @@ int new_open_db_write(DBFile *dbptr) { void new_close_db(FILE *fptr, char **key, char **value) {
if (key && *key) {
- free(*key);
+ delete [] *key;
*key = NULL;
}
if (value && *value) {
- free(*value);
+ delete [] *value;
*value = NULL;
}
@@ -487,7 +487,7 @@ int new_write_db_entry(const char *key, DBFile *dbptr, const char *fmt, ...) { }
remove(dbptr->filename);
rename(dbptr->temp_name, dbptr->filename);
- free(dbptr);
+ delete dbptr;
dbptr = NULL;
return DB_WRITE_ERROR;
}
diff --git a/src/modules/os_info.c b/src/modules/os_info.c index 731573f37..dbf72731c 100644 --- a/src/modules/os_info.c +++ b/src/modules/os_info.c @@ -332,17 +332,17 @@ class OSInfo : public Module char *c; if (nc->GetExt("os_modinfo", c)); { - free(c); + delete [] c; nc->Shrink("os_modinfo"); } } } av[0] = sstrdup(EVENT_START); mSaveData(1, av); - free(av[0]); + delete [] av[0]; if (OSInfoDBName) - free(OSInfoDBName); + delete [] OSInfoDBName; } }; @@ -382,14 +382,14 @@ int myAddNickInfo(User * u) /* ok we've found the user */ if ((na = findnick(nick))) { /* Add the module data to the user */ - na->nc->Extend("os_info", strdup(info)); + na->nc->Extend("os_info", sstrdup(info)); moduleNoticeLang(s_NickServ, u, OINFO_ADD_SUCCESS, nick); /* NickCore not found! */ } else { notice_lang(s_NickServ, u, NICK_X_NOT_REGISTERED, nick); } - free(info); + delete [] info; } } else if (strcasecmp(cmd, "DEL") == 0) { /* ok we've found the user */ @@ -398,7 +398,7 @@ int myAddNickInfo(User * u) char *c; if (na->nc->GetExt("os_info", c)) { - free(c); + delete [] c; na->nc->Shrink("os_info"); } @@ -412,12 +412,12 @@ int myAddNickInfo(User * u) } else { moduleNoticeLang(s_NickServ, u, OINFO_SYNTAX); } - free(cmd); - free(nick); + delete [] cmd; + delete [] nick; /* Syntax error */ } else if (cmd) { moduleNoticeLang(s_NickServ, u, OINFO_SYNTAX); - free(cmd); + delete [] cmd; /* Syntax error */ } else { moduleNoticeLang(s_NickServ, u, OINFO_SYNTAX); @@ -455,14 +455,14 @@ int myAddChanInfo(User * u) if (info) { if ((ci = cs_findchan(chan))) { /* Add the module data to the channel */ - ci->Extend("os_info", strdup(info)); + ci->Extend("os_info", sstrdup(info)); moduleNoticeLang(s_ChanServ, u, OCINFO_ADD_SUCCESS, chan); /* ChanInfo */ } else { notice_lang(s_ChanServ, u, CHAN_X_NOT_REGISTERED, chan); } - free(info); + delete [] info; } } else if (strcasecmp(cmd, "DEL") == 0) { if ((ci = cs_findchan(chan))) { @@ -470,7 +470,7 @@ int myAddChanInfo(User * u) char *c; if (ci->GetExt("os_info", c)) { - free(c); + delete [] c; ci->Shrink("os_info"); } moduleNoticeLang(s_ChanServ, u, OCINFO_DEL_SUCCESS, chan); @@ -483,12 +483,12 @@ int myAddChanInfo(User * u) } else { moduleNoticeLang(s_ChanServ, u, OCINFO_SYNTAX); } - free(cmd); - free(chan); + delete [] cmd; + delete [] chan; /* Syntax error */ } else if (cmd) { moduleNoticeLang(s_ChanServ, u, OCINFO_SYNTAX); - free(cmd); + delete [] cmd; /* Syntax error */ } else { moduleNoticeLang(s_ChanServ, u, OCINFO_SYNTAX); @@ -525,11 +525,8 @@ int myNickInfo(User * u) { notice_user(s_NickServ, u, " OperInfo: %s", c); } - /* NickCore not found! */ - } else { - /* we dont care! */ } - free(nick); + delete [] nick; } } } @@ -562,7 +559,7 @@ int myChanInfo(User * u) notice_user(s_ChanServ, u, " OperInfo: %s", c); } } - free(chan); + delete [] chan; } } } @@ -615,11 +612,11 @@ int mLoadData(void) na->nc->Extend("os_info", strdup(info)); } } - free(info); + delete [] info; } - free(name); + delete [] name; } - free(type); + delete [] type; } } } @@ -702,7 +699,7 @@ int mLoadConfig(void) std::string tmp = config.ReadValue("os_info", "database", DEFAULT_DB_NAME, 0); if (OSInfoDBName) - free(OSInfoDBName); + delete [] OSInfoDBName; OSInfoDBName = sstrdup(tmp.c_str()); diff --git a/src/news.c b/src/news.c index 9b5ff3db6..d113fc317 100644 --- a/src/news.c +++ b/src/news.c @@ -509,7 +509,7 @@ static int del_newsitem(int num, short type) for (i = 0; i < nnews; i++) { if (news[i].type == type && (num == 0 || news[i].num == num)) { - free(news[i].text); + delete [] news[i].text; count++; nnews--; if (i < nnews) diff --git a/src/nickserv.c b/src/nickserv.c index deab9545b..ed69455b2 100644 --- a/src/nickserv.c +++ b/src/nickserv.c @@ -181,7 +181,7 @@ void load_ns_req_db(void) while ((c = getc_db(f)) == 1) { if (c != 1) fatal("Invalid format in %s", PreNickDBName); - nr = (NickRequest *)scalloc(1, sizeof(NickRequest)); + nr = new NickRequest; SAFE(read_string(&nr->nick, f)); SAFE(read_string(&nr->passcode, f)); if (ver < 2) { @@ -189,7 +189,7 @@ void load_ns_req_db(void) len = strlen(pass); enc_encrypt(pass, len, nr->password, PASSMAX); memset(pass, 0, len); - free(pass); + delete [] pass; } else SAFE(read_buffer(nr->password, f)); SAFE(read_string(&nr->email, f)); @@ -317,7 +317,7 @@ void load_ns_dbase(void) SAFE(read_string(&s, f)); na->nc = findcore(s); - free(s); + delete [] s; slist_add(&na->nc->aliases, na); @@ -530,14 +530,12 @@ int validate_user(User * u) na->status |= NS_RECOGNIZED; na->last_seen = time(NULL); 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); return 1; } @@ -688,7 +686,7 @@ void expire_nicks() tmpnick = sstrdup(na->nick); delnick(na); send_event(EVENT_NICK_EXPIRE, 1, tmpnick); - free(tmpnick); + delete [] tmpnick; } } } @@ -799,11 +797,11 @@ int is_on_access(User * u, NickCore * nc) if (nc->accesscount == 0) return 0; - buf = (char *)scalloc(strlen(u->username) + strlen(u->host) + 2, 1); + buf = new char[strlen(u->username) + strlen(u->host) + 2]; sprintf(buf, "%s@%s", u->username, u->host); if (ircd->vhost) { if (u->vhost) { - buf2 = (char *)scalloc(strlen(u->username) + strlen(u->vhost) + 2, 1); + buf2 = new char[strlen(u->username) + strlen(u->vhost) + 2]; sprintf(buf2, "%s@%s", u->username, u->vhost); } } @@ -811,18 +809,18 @@ int is_on_access(User * u, NickCore * nc) for (i = 0; i < nc->accesscount; i++) { if (match_wild_nocase(nc->access[i], buf) || (ircd->vhost ? match_wild_nocase(nc->access[i], buf2) : 0)) { - free(buf); + delete [] buf; if (ircd->vhost) { if (u->vhost) { - free(buf2); + delete [] buf2; } } return 1; } } - free(buf); + delete [] buf; if (ircd->vhost) { - free(buf2); + delete [] buf2; } return 0; } @@ -932,7 +930,7 @@ void change_core_display(NickCore * nc, char *newdisplay) else nclists[HASH(nc->display)] = nc->next; - free(nc->display); + delete [] nc->display; nc->display = sstrdup(newdisplay); insert_core(nc); @@ -964,19 +962,19 @@ static int delcore(NickCore * nc) alog("%s: deleting nickname group %s", s_NickServ, nc->display); /* Now we can safely free it. */ - free(nc->display); + delete [] nc->display; if (nc->email) - free(nc->email); + delete [] nc->email; if (nc->greet) - free(nc->greet); + delete [] nc->greet; if (nc->url) - free(nc->url); + delete [] nc->url; if (nc->access) { for (i = 0; i < nc->accesscount; i++) { if (nc->access[i]) - free(nc->access[i]); + delete [] nc->access[i]; } free(nc->access); } @@ -984,7 +982,7 @@ static int delcore(NickCore * nc) if (nc->memos.memos) { for (i = 0; i < nc->memos.memocount; i++) { if (nc->memos.memos[i].text) - free(nc->memos.memos[i].text); + delete [] nc->memos.memos[i].text; } free(nc->memos.memos); } @@ -1000,12 +998,12 @@ int delnickrequest(NickRequest * nr) if (nr) { nrlists[HASH(nr->nick)] = nr->next; if (nr->nick) - free(nr->nick); + delete [] nr->nick; if (nr->passcode) - free(nr->passcode); + delete [] nr->passcode; if (nr->email) - free(nr->email); - free(nr); + delete [] nr->email; + delete nr; } return 0; @@ -1062,13 +1060,13 @@ int delnick(NickAlias * na) else nalists[HASH(na->nick)] = na->next; - free(na->nick); + delete [] na->nick; if (na->last_usermask) - free(na->last_usermask); + delete [] na->last_usermask; if (na->last_realname) - free(na->last_realname); + delete [] na->last_realname; if (na->last_quit) - free(na->last_quit); + delete [] na->last_quit; delete na; return 1; @@ -1160,7 +1158,7 @@ static void rem_ns_timeout(NickAlias * na, int type) t->prev->next = t->next; else my_timeouts = t->next; - free(t); + delete t; t = t2; } else { t = t->next; @@ -1222,7 +1220,7 @@ static void add_ns_timeout(NickAlias * na, int type, time_t delay) to = add_timeout(delay, timeout_routine, 0); to->data = na; - t = (struct my_timeout *)scalloc(sizeof(struct my_timeout), 1); + t = new my_timeout; t->na = na; t->to = to; t->type = type; @@ -1257,7 +1255,7 @@ void del_ns_timeout(NickAlias * na, int type) else my_timeouts = t->next; del_timeout(t->to); - free(t); + delete t; t = t2; } else { t = t->next; @@ -1291,7 +1289,7 @@ void clean_ns_timeouts(NickAlias * na) else my_timeouts = t->next; del_timeout(t->to); - free(t); + delete t; } } } @@ -1383,7 +1381,7 @@ void nsStartNickTracking(User * u) /* Release memory if needed */ if (u->nickTrack) - free(u->nickTrack); + delete [] u->nickTrack; /* Copy the nick core displayed nick to the user structure for further checks */ @@ -1399,7 +1397,7 @@ void nsStopNickTracking(User * u) { /* Simple enough. If its there, release it */ if (u->nickTrack) { - free(u->nickTrack); + delete [] u->nickTrack; u->nickTrack = NULL; } } diff --git a/src/operserv.c b/src/operserv.c index 938fdc3a7..fe270fd38 100644 --- a/src/operserv.c +++ b/src/operserv.c @@ -179,7 +179,7 @@ void load_os_dbase(void) slist_setcapacity(&akills, tmp16); for (i = 0; i < akills.capacity; i++) { - ak = (Akill *)scalloc(sizeof(Akill), 1); + ak = new Akill; SAFE(read_string(&ak->user, f)); SAFE(read_string(&ak->host, f)); @@ -199,7 +199,7 @@ void load_os_dbase(void) slist_setcapacity(&sglines, tmp16); for (i = 0; i < sglines.capacity; i++) { - sx = (SXLine *)scalloc(sizeof(SXLine), 1); + sx = new SXLine; SAFE(read_string(&sx->mask, f)); SAFE(read_string(&sx->by, f)); @@ -216,7 +216,7 @@ void load_os_dbase(void) slist_setcapacity(&sqlines, tmp16); for (i = 0; i < sqlines.capacity; i++) { - sx = (SXLine *)scalloc(sizeof(SXLine), 1); + sx = new SXLine; SAFE(read_string(&sx->mask, f)); SAFE(read_string(&sx->by, f)); @@ -233,7 +233,7 @@ void load_os_dbase(void) slist_setcapacity(&szlines, tmp16); for (i = 0; i < szlines.capacity; i++) { - sx = (SXLine *)scalloc(sizeof(SXLine), 1); + sx = new SXLine; SAFE(read_string(&sx->mask, f)); SAFE(read_string(&sx->by, f)); @@ -573,7 +573,7 @@ int add_akill(User * u, char *mask, const char *by, const time_t expires, host = strchr(mask2, '@'); if (!host) { - free(mask2); + delete [] mask2; return -1; } @@ -581,10 +581,10 @@ int add_akill(User * u, char *mask, const char *by, const time_t expires, *host = 0; host++; - entry = (Akill *)scalloc(sizeof(Akill), 1); + entry = new Akill; if (!entry) { - free(mask2); + delete [] mask2; return -1; } @@ -601,7 +601,7 @@ int add_akill(User * u, char *mask, const char *by, const time_t expires, ircdproto->SendAkill(entry->user, entry->host, entry->by, entry->seton, entry->expires, entry->reason); - free(mask2); + delete [] mask2; return deleted; } @@ -690,11 +690,11 @@ static void free_akill_entry(SList * slist, void *item) ircdproto->SendAkillDel(ak->user, ak->host); /* Free the structure */ - free(ak->user); - free(ak->host); - free(ak->by); - free(ak->reason); - free(ak); + delete [] ak->user; + delete [] ak->host; + delete [] ak->by; + delete [] ak->reason; + delete ak; } /* item1 is not an Akill pointer, but a char @@ -793,7 +793,7 @@ int add_sgline(User * u, char *mask, const char *by, const time_t expires, } /* We can now (really) add the SGLINE. */ - entry = (SXLine *)scalloc(sizeof(SXLine), 1); + entry = new SXLine; if (!entry) return -1; @@ -878,10 +878,10 @@ static void free_sgline_entry(SList * slist, void *item) ircdproto->SendSGLineDel(sx->mask); /* Free the structure */ - free(sx->mask); - free(sx->by); - free(sx->reason); - free(sx); + delete [] sx->mask; + delete [] sx->by; + delete [] sx->reason; + delete sx; } /* item1 is not an SXLine pointer, but a char */ @@ -980,7 +980,7 @@ int add_sqline(User * u, char *mask, const char *by, const time_t expires, } /* We can now (really) add the SQLINE. */ - entry = (SXLine *)scalloc(sizeof(SXLine), 1); + entry = new SXLine; if (!entry) return -1; @@ -1099,10 +1099,10 @@ static void free_sqline_entry(SList * slist, void *item) ircdproto->SendSQLineDel(sx->mask); /* Free the structure */ - free(sx->mask); - free(sx->by); - free(sx->reason); - free(sx); + delete [] sx->mask; + delete [] sx->by; + delete [] sx->reason; + delete sx; } /* item1 is not an SXLine pointer, but a char */ @@ -1192,7 +1192,7 @@ int add_szline(User * u, char *mask, const char *by, const time_t expires, } /* We can now (really) add the SZLINE. */ - entry = (SXLine *)scalloc(sizeof(SXLine), 1); + entry = new SXLine; if (!entry) return -1; @@ -1267,10 +1267,10 @@ static void free_szline_entry(SList * slist, void *item) ircdproto->SendSZLineDel(sx->mask); /* Free the structure */ - free(sx->mask); - free(sx->by); - free(sx->reason); - free(sx); + delete [] sx->mask; + delete [] sx->by; + delete [] sx->reason; + delete sx; } /* item1 is not an SXLine pointer, but a char @@ -1395,7 +1395,7 @@ void runDefCon(void) if ((newmodes = defconReverseModes(DefConChanModes))) { alog("DEFCON: setting %s on all chan's", newmodes); do_mass_mode(newmodes); - free(newmodes); + delete [] newmodes; } } } @@ -1412,7 +1412,7 @@ char *defconReverseModes(const char *modes) if (!modes) { return NULL; } - if (!(newmodes = (char *)malloc(sizeof(char) * strlen(modes) + 1))) { + if (!(newmodes = new char[strlen(modes) + 1])) { return NULL; } for (i = 0; i < strlen(modes); i++) { @@ -1468,7 +1468,7 @@ int defconParseModeString(const char *str) if ((int) mode < 128 && (cbm = &cbmodes[(int) mode])->flag != 0) { if (cbm->flags & CBM_NO_MLOCK) { alog("DefConChanModes mode character '%c' cannot be locked", mode); - free(str_copy); + delete [] str_copy; return 0; } else if (add) { DefConModesOn |= cbm->flag; @@ -1476,7 +1476,7 @@ int defconParseModeString(const char *str) if (cbm->cssetvalue) { if (!(param = strtok(NULL, " "))) { alog("DefConChanModes mode character '%c' has no parameter while one is expected", mode); - free(str_copy); + delete [] str_copy; return 0; } cbm->cssetvalue(&DefConModesCI, param); @@ -1492,19 +1492,19 @@ int defconParseModeString(const char *str) } } else { alog("DefConChanModes unknown mode character '%c'", mode); - free(str_copy); + delete [] str_copy; return 0; } } /* while (*param) */ - free(str_copy); + delete [] str_copy; if (ircd->Lmode) { /* We can't mlock +L if +l is not mlocked as well. */ if ((DefConModesOn & ircd->chan_lmode) && !(DefConModesOn & anope_get_limit_mode())) { DefConModesOn &= ~ircd->chan_lmode; - free(DefConModesCI.mlock_redirect); + delete [] DefConModesCI.mlock_redirect; DefConModesCI.mlock_redirect = NULL; alog("DefConChanModes must lock mode +l as well to lock mode +L"); return 0; diff --git a/src/process.c b/src/process.c index 253fd31b7..eb2d9bf62 100644 --- a/src/process.c +++ b/src/process.c @@ -38,52 +38,45 @@ void add_ignore(const char *nick, time_t delta) char *mask, *user, *host; User *u; time_t now; - -if (!nick) + if (!nick) return; now = time(NULL); - - - /* If it s an existing user, we ignore the hostmask. */ - if ((u = finduser(nick))) { + /* If it s an existing user, we ignore the hostmask. */ + if ((u = finduser(nick))) { snprintf(tmp, sizeof(tmp), "*!*@%s", u->host); mask = sstrdup(tmp); - - /* Determine whether we get a nick or a mask. */ + /* Determine whether we get a nick or a mask. */ } else if ((host = strchr(nick, '@'))) { - /* Check whether we have a nick too.. */ + /* Check whether we have a nick too.. */ if ((user = strchr(nick, '!'))) { - /* this should never happen */ - if (user > host) + /* this should never happen */ + if (user > host) return; mask = sstrdup(nick); } else { - /* We have user@host. Add nick wildcard. */ + /* We have user@host. Add nick wildcard. */ snprintf(tmp, sizeof(tmp), "*!%s", nick); mask = sstrdup(tmp); } - - /* We only got a nick.. */ + + /* We only got a nick.. */ } else { - -snprintf(tmp, sizeof(tmp), "%s!*@*", nick); + snprintf(tmp, sizeof(tmp), "%s!*@*", nick); mask = sstrdup(tmp); } - - /* Check if we already got an identical entry. */ - for (ign = ignore; ign; ign = ign->next) + /* Check if we already got an identical entry. */ + for (ign = ignore; ign; ign = ign->next) if (stricmp(ign->mask, mask) == 0) break; - /* Found one.. */ - if (ign) { + if (ign) { if (delta == 0) ign->time = 0; else if (ign->time < now + delta) ign->time = now + delta; - /* Create new entry.. */ + /* Create new entry.. */ } else { - ign = (IgnoreData *)scalloc(sizeof(*ign), 1); + ign = new IgnoreData; ign->mask = mask; ign->time = (delta == 0 ? 0 : now + delta); ign->prev = NULL; @@ -100,7 +93,7 @@ snprintf(tmp, sizeof(tmp), "%s!*@*", nick); /** * Retrieve an ignorance record for a nick or mask. - * If the nick isn't being ignored, we return NULL and if necesary + * If the nick isn't being ignored, we return NULL and if necesary * flush the record from the ignore list (i.e. ignore timed out). * @param nick Nick or (nick!)user@host to look for on the ignorelist. * @return Pointer to the ignore record, NULL if none was found. @@ -112,54 +105,42 @@ IgnoreData *get_ignore(const char *nick) char *user, *host; time_t now; User *u; - -if (!nick) + if (!nick) return NULL; - - - /* User has disabled the IGNORE system */ - if (!allow_ignore) + /* User has disabled the IGNORE system */ + if (!allow_ignore) return NULL; - -now = time(NULL); - -u = finduser(nick); - - - /* If we find a real user, match his mask against the ignorelist. */ - if (u) { + now = time(NULL); + u = finduser(nick); + /* If we find a real user, match his mask against the ignorelist. */ + if (u) { /* Opers are not ignored, even if a matching entry may be present. */ - if (is_oper(u)) + if (is_oper(u)) return NULL; for (ign = ignore; ign; ign = ign->next) if (match_usermask(ign->mask, u)) break; - -} else { - /* We didn't get a user.. generate a valid mask. */ + } else { + /* We didn't get a user.. generate a valid mask. */ if ((host = strchr(nick, '@'))) { - if ((user = strchr(nick, '!'))) { - /* this should never happen */ - if (user > host) + if ((user = strchr(nick, '!'))) { + /* this should never happen */ + if (user > host) return NULL; snprintf(tmp, sizeof(tmp), "%s", nick); } else { - /* We have user@host. Add nick wildcard. */ - snprintf(tmp, sizeof(tmp), "*!%s", nick); + /* We have user@host. Add nick wildcard. */ + snprintf(tmp, sizeof(tmp), "*!%s", nick); } - - /* We only got a nick.. */ + /* We only got a nick.. */ } else - -snprintf(tmp, sizeof(tmp), "%s!*@*", nick); - -for (ign = ignore; ign; ign = ign->next) + snprintf(tmp, sizeof(tmp), "%s!*@*", nick); + for (ign = ignore; ign; ign = ign->next) if (match_wild_nocase(ign->mask, tmp)) break; } - - /* Check whether the entry has timed out */ - if (ign && ign->time != 0 && ign->time <= now) { + /* Check whether the entry has timed out */ + if (ign && ign->time != 0 && ign->time <= now) { if (debug) alog("debug: Expiring ignore entry %s", ign->mask); if (ign->prev) @@ -168,12 +149,11 @@ for (ign = ignore; ign; ign = ign->next) ignore = ign->next; if (ign->next) ign->next->prev = ign->prev; - free(ign->mask); - free(ign); + delete [] ign->mask; + delete ign; ign = NULL; } - -if (ign && debug) + if (ign && debug) alog("debug: Found ignore entry (%s) for %s", ign->mask, nick); return ign; } @@ -192,88 +172,71 @@ int delete_ignore(const char *nick) char tmp[BUFSIZE]; char *user, *host; User *u; - -if (!nick) + if (!nick) return 0; - - /* If it s an existing user, we ignore the hostmask. */ - if ((u = finduser(nick))) { + /* If it s an existing user, we ignore the hostmask. */ + if ((u = finduser(nick))) { snprintf(tmp, sizeof(tmp), "*!*@%s", u->host); - - /* Determine whether we get a nick or a mask. */ + /* Determine whether we get a nick or a mask. */ } else if ((host = strchr(nick, '@'))) { - /* Check whether we have a nick too.. */ - if ((user = strchr(nick, '!'))) { - /* this should never happen */ - if (user > host) + /* Check whether we have a nick too.. */ + if ((user = strchr(nick, '!'))) { + /* this should never happen */ + if (user > host) return 0; snprintf(tmp, sizeof(tmp), "%s", nick); } else { - /* We have user@host. Add nick wildcard. */ + /* We have user@host. Add nick wildcard. */ snprintf(tmp, sizeof(tmp), "*!%s", nick); } - - /* We only got a nick.. */ + /* We only got a nick.. */ } else - -snprintf(tmp, sizeof(tmp), "%s!*@*", nick); - + snprintf(tmp, sizeof(tmp), "%s!*@*", nick); for (ign = ignore; ign; ign = ign->next) if (stricmp(ign->mask, tmp) == 0) break; - - /* No matching ignore found. */ - if (!ign) + /* No matching ignore found. */ + if (!ign) return 0; - -if (debug) + if (debug) alog("Deleting ignore entry %s", ign->mask); - - /* Delete the entry and all references to it. */ - if (ign->prev) + /* Delete the entry and all references to it. */ + if (ign->prev) ign->prev->next = ign->next; else if (ignore == ign) ignore = ign->next; if (ign->next) ign->next->prev = ign->prev; - - -free(ign->mask); - free(ign); + delete [] ign->mask; + delete ign; ign = NULL; - -return 1; - + return 1; } -/*************************************************************************/ - +/*************************************************************************/ + /** * Clear the ignorelist. * @return The number of entries deleted. - */ -int clear_ignores() + */ +int clear_ignores() { IgnoreData *ign, *next; int i = 0; - -if (!ignore) + if (!ignore) return 0; - -for (ign = ignore; ign; ign = next) { + for (ign = ignore; ign; ign = next) { next = ign->next; if (debug) alog("Deleting ignore entry %s", ign->mask); - free(ign->mask); - free(ign); + delete [] ign->mask; + delete ign; i++; } - -ignore = NULL; + ignore = NULL; return i; - } @@ -390,7 +353,7 @@ void process() } if (mod_current_buffer) { - free(mod_current_buffer); + delete [] mod_current_buffer; } if (ac >= 1) { diff --git a/src/protocol/inspircd11.c b/src/protocol/inspircd11.c index 043e169f1..ebc694745 100644 --- a/src/protocol/inspircd11.c +++ b/src/protocol/inspircd11.c @@ -824,6 +824,7 @@ int anope_event_fjoin(const char *source, int ac, const char **av) } strncat(nicklist, prefixandnick, 513); strncat(nicklist, " ", 513); + delete [] curnick; curtoken++; curnick = myStrGetToken(av[2], ' ', curtoken); nlen = 0; @@ -884,7 +885,7 @@ int anope_event_topic(const char *source, int ac, const char **av) return MOD_CONT; if (c->topic) { - free(c->topic); + delete [] c->topic; c->topic = NULL; } if (ac > 1 && *av[1]) diff --git a/src/protocol/inspircd12.cpp b/src/protocol/inspircd12.cpp index 44f294439..205e91897 100644 --- a/src/protocol/inspircd12.cpp +++ b/src/protocol/inspircd12.cpp @@ -882,6 +882,7 @@ int anope_event_fjoin(const char *source, int ac, const char **av) endnick: strncat(nicklist, prefixandnick, 513); strncat(nicklist, " ", 513); + delete [] curnick; curtoken++; curnick = myStrGetToken(av[ac - 1], ' ', curtoken); nlen = 0; @@ -933,7 +934,7 @@ int anope_event_topic(const char *source, int ac, const char **av) return MOD_CONT; if (c->topic) { - free(c->topic); + delete [] c->topic; c->topic = NULL; } if (ac > 1 && *av[1]) @@ -1369,7 +1370,7 @@ class ProtoInspIRCd : public Module ~ProtoInspIRCd() { - free(TS6SID); + delete [] TS6SID; } }; diff --git a/src/protocol/ratbox.c b/src/protocol/ratbox.c index 245ae5f91..a91d676a6 100644 --- a/src/protocol/ratbox.c +++ b/src/protocol/ratbox.c @@ -763,7 +763,7 @@ int anope_event_topic(const char *source, int ac, const char **av) return MOD_CONT; if (c->topic) { - free(c->topic); + delete [] c->topic; c->topic = NULL; } if (ac > 1 && *av[1]) @@ -808,18 +808,18 @@ int anope_event_tburst(const char *source, int ac, const char **av) merge_args(ac - 1, av + 1), av[0]); } if (setter) - free(setter); + delete [] setter; return MOD_CONT; } if (check_topiclock(c, topic_time)) { if (setter) - free(setter); + delete [] setter; return MOD_CONT; } if (c->topic) { - free(c->topic); + delete [] c->topic; c->topic = NULL; } if (ac > 1 && *av[3]) @@ -830,7 +830,7 @@ int anope_event_tburst(const char *source, int ac, const char **av) record_topic(av[0]); if (setter) - free(setter); + delete [] setter; return MOD_CONT; } @@ -1044,7 +1044,7 @@ int anope_event_capab(const char *source, int ac, const char **av) /* Free our built ac/av */ for (argvsize = 0; argvsize < argc; argvsize++) { - free((char *)argv[argvsize]); + delete [] argv[argvsize]; } free((char **)argv); @@ -1083,9 +1083,9 @@ int anope_event_bmask(const char *source, int ac, const char **av) add_invite(c, b); } if (b) - free(b); + delete [] b; } - free(bans); + delete [] bans; } return MOD_CONT; } @@ -1172,7 +1172,7 @@ class ProtoRatbox : public Module ~ProtoRatbox() { - free(TS6SID); + delete [] TS6SID; } }; diff --git a/src/protocol/unreal32.c b/src/protocol/unreal32.c index c0ee75c6c..74bafd0f9 100644 --- a/src/protocol/unreal32.c +++ b/src/protocol/unreal32.c @@ -1281,9 +1281,9 @@ int anope_event_server(const char *source, int ac, const char **av) upnumeric = myStrGetToken(vl, '-', 2); desc = myStrGetTokenRemainder(av[2], ' ', 1); do_server(source, av[0], av[1], desc, upnumeric); - Anope_Free(vl); - Anope_Free(desc); - Anope_Free(upnumeric); + delete [] vl; + delete [] desc; + delete [] upnumeric; } else { do_server(source, av[0], av[1], av[2], NULL); } diff --git a/src/servers.c b/src/servers.c index 0665e6fce..4e57bc430 100644 --- a/src/servers.c +++ b/src/servers.c @@ -124,7 +124,7 @@ Server *new_server(Server * server_uplink, const char *name, const char *desc, if (debug) alog("Creating %s(%s) uplinked to %s", name, suid, server_uplink ? server_uplink->name : "No uplink"); - serv = (Server *)scalloc(sizeof(Server), 1); + serv = new Server; if (!name) name = ""; serv->name = sstrdup(name); @@ -210,7 +210,7 @@ static void delete_server(Server * serv, const char *quitreason) && (na->status & (NS_IDENTIFIED | NS_RECOGNIZED))) { na->last_seen = time(NULL); if (na->last_quit) - free(na->last_quit); + delete [] na->last_quit; na->last_quit = (quitreason ? sstrdup(quitreason) : NULL); } @@ -236,8 +236,8 @@ static void delete_server(Server * serv, const char *quitreason) if (debug) alog("debug: delete_server() cleared all servers"); - free(serv->name); - free(serv->desc); + delete [] serv->name; + delete [] serv->desc; if (serv->prev) serv->prev->next = serv->next; if (serv->next) @@ -313,7 +313,7 @@ Server *findserver_uid(Server * s, const char *name) if (debug) alog("debug: findserver_uid(%s)", name); - + while (s && s->suid && (stricmp(s->suid, name) != 0)) { if (debug >= 3) @@ -392,10 +392,10 @@ void do_server(const char *source, const char *servername, const char *hops, s = me_server; else s = findserver(servlist, source); - + if (s == NULL) s = findserver_uid(servlist, source); - + if (s == NULL) throw CoreException("Recieved a server from a nonexistant uplink?"); @@ -494,10 +494,9 @@ void capab_parse(int ac, const char **av) ircd->nickchars = sstrdup(tmp); } - if (s) - free(s); + delete [] s; if (tmp) - free(tmp); + delete [] tmp; } } diff --git a/src/sessions.c b/src/sessions.c index ede7dfbc9..2a3344096 100644 --- a/src/sessions.c +++ b/src/sessions.c @@ -251,7 +251,7 @@ int add_session(const char *nick, const char *host, char *hostip) } nsessions++; - session = (Session *)scalloc(sizeof(Session), 1); + session = new Session; session->host = sstrdup(host); list = &sessionlist[HASH(session->host)]; session->next = *list; @@ -312,8 +312,8 @@ void del_session(const char *host) if (debug >= 2) alog("debug: del_session(): free session structure"); - free(session->host); - free(session); + delete [] session->host; + delete session; nsessions--; @@ -338,8 +338,8 @@ void expire_exceptions(void) ircdproto->SendGlobops(s_OperServ, "Session limit exception for %s has expired.", exceptions[i].mask); - free(exceptions[i].mask); - free(exceptions[i].reason); + delete [] exceptions[i].mask; + delete [] exceptions[i].reason; nexceptions--; memmove(exceptions + i, exceptions + i + 1, sizeof(Exception) * (nexceptions - i)); @@ -523,8 +523,8 @@ static int exception_del(const int index) if (index < 0 || index >= nexceptions) return 0; - free(exceptions[index].mask); - free(exceptions[index].reason); + delete [] exceptions[index].mask; + delete [] exceptions[index].reason; nexceptions--; memmove(exceptions + index, exceptions + index + 1, sizeof(Exception) * (nexceptions - index)); @@ -773,7 +773,7 @@ int do_exception(User * u) if ((n1 >= 0 && n1 < nexceptions) && (n2 >= 0 && n2 < nexceptions) && (n1 != n2)) { - exception = (Exception *)scalloc(sizeof(Exception), 1); + exception = new Exception; memcpy(exception, &exceptions[n1], sizeof(Exception)); if (n1 < n2) { @@ -788,7 +788,7 @@ int do_exception(User * u) memmove(&exceptions[n2], exception, sizeof(Exception)); } - free(exception); + delete exception; notice_lang(s_OperServ, u, OPER_EXCEPTION_MOVED, exceptions[n1].mask, n1 + 1, n2 + 1); diff --git a/src/timeout.c b/src/timeout.c index 99e47164d..d3a69bf6d 100644 --- a/src/timeout.c +++ b/src/timeout.c @@ -51,7 +51,7 @@ void check_timeouts(void) to->prev->next = to->next; else timeouts = to->next; - free(to); + delete to; to = to2; } if (debug >= 2) @@ -68,7 +68,7 @@ void check_timeouts(void) Timeout *add_timeout(int delay, void (*code) (Timeout *), int repeat) { - Timeout *t = (Timeout *)scalloc(sizeof(Timeout), 1); + Timeout *t = new Timeout; t->settime = time(NULL); t->timeout = t->settime + delay; t->code = code; @@ -101,7 +101,7 @@ void del_timeout(Timeout * t) timeouts = t->next; if (t->next) t->next->prev = t->prev; - free(t); + delete t; } /*************************************************************************/ diff --git a/src/users.c b/src/users.c index c25e176d7..47a0ba1b9 100644 --- a/src/users.c +++ b/src/users.c @@ -123,7 +123,7 @@ void User::SetDisplayedHost(const std::string &shost) throw "empty host? in MY services? it seems it's more likely than I thought."; if (this->vhost) - free(this->vhost); + delete [] this->vhost; this->vhost = sstrdup(shost.c_str()); if (debug) @@ -138,7 +138,7 @@ void User::SetIdent(const std::string &ident) throw "empty ident in SetIdent"; if (this->vident) - free(this->vident); + delete [] this->vident; this->vident = sstrdup(ident.c_str()); if (debug) @@ -153,14 +153,14 @@ void User::SetRealname(const std::string &srealname) throw "realname empty in SetRealname"; if (this->realname) - free(this->realname); + delete [] this->realname; this->realname = sstrdup(srealname.c_str()); if (this->na && (nick_identified(this) || (!(this->na->nc->flags & NI_SECURE) && nick_recognized(this)))) { if (this->na->last_realname) - free(this->na->last_realname); + delete [] this->na->last_realname; this->na->last_realname = sstrdup(srealname.c_str()); } @@ -191,7 +191,7 @@ User::~User() srealname, this->server->name); } - free(srealname); + delete [] srealname; } send_event(EVENT_USER_LOGOFF, 1, this->nick); @@ -207,18 +207,18 @@ User::~User() if (debug >= 2) alog("debug: User::~User(): free user data"); - free(this->username); - free(this->host); + delete [] this->username; + delete [] this->host; if (this->vhost) - free(this->vhost); + delete [] this->vhost; if (this->vident) - free(this->vident); + delete [] this->vident; if (this->uid) - free(this->uid); + delete [] this->uid; Anope_Free(this->realname); - Anope_Free(this->hostip); + delete [] this->hostip; if (debug >= 2) alog("debug: User::~User(): remove from channels"); @@ -229,7 +229,7 @@ User::~User() { c2 = c->next; chan_deluser(this, c->chan); - free(c); + delete c; c = c2; } @@ -245,12 +245,12 @@ User::~User() while (ci) { ci2 = ci->next; - free(ci); + delete ci; ci = ci2; } if (this->nickTrack) - free(this->nickTrack); + delete [] this->nickTrack; if (debug >= 2) alog("debug: User::~User(): delete from list"); @@ -316,11 +316,9 @@ void update_host(User * user) || (!(user->na->nc->flags & NI_SECURE) && nick_recognized(user)))) { if (user->na->last_usermask) - free(user->na->last_usermask); + delete [] user->na->last_usermask; - user->na->last_usermask = - (char *)smalloc(strlen(common_get_vident(user)) + - strlen(common_get_vhost(user)) + 2); + user->na->last_usermask = new char[strlen(common_get_vident(user)) + strlen(common_get_vhost(user)) + 2]; sprintf(user->na->last_usermask, "%s@%s", common_get_vident(user), common_get_vhost(user)); } @@ -376,10 +374,10 @@ User *finduser(const char *nick) if (debug >= 3) alog("debug: finduser(%p)", nick); - + if (isdigit(*nick) && ircd->ts6) return find_byuid(nick); - + user = userlist[HASH(nick)]; while (user && stricmp(user->nick, nick) != 0) user = user->next; @@ -545,7 +543,7 @@ User *do_nick(const char *source, const char *nick, const char *username, const alog("LOGUSERS: %s (%s@%s) (%s) connected to the network (%s).", nick, username, host, logrealname, server); } } - Anope_Free(logrealname); + delete [] logrealname; } /* We used to ignore the ~ which a lot of ircd's use to indicate no @@ -683,7 +681,7 @@ User *do_nick(const char *source, const char *nick, const char *username, const nick, user->server->name); } if (logrealname) { - free(logrealname); + delete [] logrealname; } } @@ -742,10 +740,8 @@ User *do_nick(const char *source, const char *nick, const char *username, const user->na->last_seen = time(NULL); if (user->na->last_usermask) - free(user->na->last_usermask); - user->na->last_usermask = - (char *)smalloc(strlen(common_get_vident(user)) + - strlen(common_get_vhost(user)) + 2); + delete [] user->na->last_usermask; + user->na->last_usermask = new char[strlen(common_get_vident(user)) + strlen(common_get_vhost(user)) + 2]; sprintf(user->na->last_usermask, "%s@%s", common_get_vident(user), common_get_vhost(user)); @@ -836,7 +832,7 @@ void do_quit(const char *source, int ac, const char **av) && (na->status & (NS_IDENTIFIED | NS_RECOGNIZED))) { na->last_seen = time(NULL); if (na->last_quit) - free(na->last_quit); + delete [] na->last_quit; na->last_quit = *av[0] ? sstrdup(av[0]) : NULL; } if (LimitSessions && !is_ulined(user->server->name)) { @@ -872,7 +868,7 @@ void do_kill(const char *nick, const char *msg) && (na->status & (NS_IDENTIFIED | NS_RECOGNIZED))) { na->last_seen = time(NULL); if (na->last_quit) - free(na->last_quit); + delete [] na->last_quit; na->last_quit = *msg ? sstrdup(msg) : NULL; } @@ -966,7 +962,7 @@ int match_usermask(const char *mask, User * user) } host = strtok(NULL, ""); if (!username || !host) { - free(mask2); + delete [] mask2; return 0; } @@ -981,7 +977,7 @@ int match_usermask(const char *mask, User * user) || match_wild_nocase(host, user->vhost)); } - free(mask2); + delete [] mask2; return result; } @@ -1011,7 +1007,7 @@ int match_userip(const char *mask, User * user, char *iphost) } host = strtok(NULL, ""); if (!username || !host) { - free(mask2); + delete [] mask2; return 0; } @@ -1026,7 +1022,7 @@ int match_userip(const char *mask, User * user, char *iphost) || match_wild_nocase(host, user->vhost)); } - free(mask2); + delete [] mask2; return result; } @@ -1060,7 +1056,7 @@ void split_usermask(const char *mask, char **nick, char **user, *nick = sstrdup(*nick); *user = sstrdup(*user); *host = sstrdup(*host); - free(mask2); + delete [] mask2; } /*************************************************************************/ @@ -1083,7 +1079,7 @@ char *create_mask(User * u) * will never be longer than this (and will often be shorter), thus we * can use strcpy() and sprintf() safely. */ - end = mask = (char *)smalloc(ulen + strlen(common_get_vhost(u)) + 3); + end = mask = new char[ulen + strlen(common_get_vhost(u)) + 3]; end += sprintf(end, "%s%s@", (ulen < (*(common_get_vident(u)) == @@ -1102,13 +1098,13 @@ char *create_mask(User * u) *strrchr(s, '.') = 0; sprintf(end, "%s.*", s); - free(s); + delete [] s; } else { if ((s = strchr(common_get_vhost(u), '.')) && strchr(s + 1, '.')) { s = sstrdup(strchr(common_get_vhost(u), '.') - 1); *s = '*'; strcpy(end, s); - free(s); + delete [] s; } else { strcpy(end, common_get_vhost(u)); } |