summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorgeniusdex geniusdex@31f1291d-b8d6-0310-a050-a5561fc1590b <geniusdex geniusdex@31f1291d-b8d6-0310-a050-a5561fc1590b@5417fbe8-f217-4b02-8779-1006273d7864>2005-05-13 19:58:49 +0000
committergeniusdex geniusdex@31f1291d-b8d6-0310-a050-a5561fc1590b <geniusdex geniusdex@31f1291d-b8d6-0310-a050-a5561fc1590b@5417fbe8-f217-4b02-8779-1006273d7864>2005-05-13 19:58:49 +0000
commite024944b6dcd9e89ef76e6f51ecd85dcd9e250ff (patch)
tree00f16f35fd0fe64516d3a325cfb1b1f7cef7dd60 /src
parentf50b00cdb6b4bcccfea510ea4f807797aca20349 (diff)
BUILD : 1.7.9 (795) BUGS : 379 NOTES : Fixed the channelname issue in do_part once and for all with sstrdup(tm) power
git-svn-id: svn://svn.anope.org/anope/trunk@795 31f1291d-b8d6-0310-a050-a5561fc1590b git-svn-id: http://anope.svn.sourceforge.net/svnroot/anope/trunk@554 5417fbe8-f217-4b02-8779-1006273d7864
Diffstat (limited to 'src')
-rw-r--r--src/channels.c11
1 files changed, 8 insertions, 3 deletions
diff --git a/src/channels.c b/src/channels.c
index 342c55a11..7f4867c40 100644
--- a/src/channels.c
+++ b/src/channels.c
@@ -653,6 +653,7 @@ void do_part(const char *source, int ac, char **av)
User *user;
char *s, *t;
struct u_chanlist *c;
+ char *channame;
user = finduser(source);
if (!user) {
@@ -676,8 +677,10 @@ void do_part(const char *source, int ac, char **av)
alog("user: BUG parting %s: channel entry found but c->chan NULL", s);
return;
}
+ channame = sstrdup(c->chan->name);
send_event(EVENT_PART_CHANNEL, 3, EVENT_START, user->nick,
- c->chan->name);
+ channame);
+
chan_deluser(user, c->chan);
if (c->next)
c->next->prev = c->prev;
@@ -685,9 +688,11 @@ void do_part(const char *source, int ac, char **av)
c->prev->next = c->next;
else
user->chans = c->next;
- send_event(EVENT_PART_CHANNEL, 3, EVENT_STOP, user->nick,
- c->chan->name);
free(c);
+
+ send_event(EVENT_PART_CHANNEL, 3, EVENT_STOP, user->nick,
+ channame);
+ free(channame);
}
}
}