diff options
-rw-r--r-- | include/modules.h | 6 | ||||
-rw-r--r-- | src/channels.c | 5 |
2 files changed, 7 insertions, 4 deletions
diff --git a/include/modules.h b/include/modules.h index 7a122804d..f7354f4e2 100644 --- a/include/modules.h +++ b/include/modules.h @@ -640,9 +640,11 @@ class CoreExport Module /** Called when a user parts a channel * @param u The user - * @param c The channel + * @param c The channel, may be NULL if the channel no longer exists + * @param channel The channel name + * @param msg The part reason */ - virtual void OnPartChannel(User *u, Channel *c, const std::string &msg) { } + virtual void OnPartChannel(User *u, Channel *c, const std::string &channel, const std::string &msg) { } /** Called before a user joins a channel * @param u The user diff --git a/src/channels.c b/src/channels.c index 6bd4e5350..1013d7e9d 100644 --- a/src/channels.c +++ b/src/channels.c @@ -873,7 +873,7 @@ void do_join(const char *source, int ac, const char **av) channame = sstrdup(c->chan->name); FOREACH_MOD(I_OnPrePartChannel, OnPrePartChannel(user, c->chan)); chan_deluser(user, c->chan); - FOREACH_MOD(I_OnPartChannel, OnPartChannel(user, c->chan, "")); + FOREACH_MOD(I_OnPartChannel, OnPartChannel(user, findchan(channame), channame, "")); delete [] channame; delete c; c = nextc; @@ -1017,10 +1017,11 @@ void do_part(const char *source, int ac, const char **av) return; } FOREACH_MOD(I_OnPrePartChannel, OnPrePartChannel(user, c->chan)); + std::string ChannelName = c->chan->name; chan_deluser(user, c->chan); - FOREACH_MOD(I_OnPartChannel, OnPartChannel(user, c->chan, av[1] ? av[1] : "")); + FOREACH_MOD(I_OnPartChannel, OnPartChannel(user, findchan(ChannelName.c_str()), ChannelName, av[1] ? av[1] : "")); if (c->next) c->next->prev = c->prev; |