Bump liberty, fix map iterators
This commit is contained in:
25
kike.c
25
kike.c
@@ -870,18 +870,18 @@ client_unregister (struct client *c, const char *reason)
|
||||
irc_send_to_roommates (c, message);
|
||||
free (message);
|
||||
|
||||
struct str_map_iter iter;
|
||||
str_map_iter_init (&iter, &c->ctx->channels);
|
||||
struct channel *chan, *next = str_map_iter_next (&iter);
|
||||
for (chan = next; chan; chan = next)
|
||||
struct str_map_unset_iter iter;
|
||||
str_map_unset_iter_init (&iter, &c->ctx->channels);
|
||||
struct channel *chan;
|
||||
while ((chan = str_map_unset_iter_next (&iter)))
|
||||
{
|
||||
next = str_map_iter_next (&iter);
|
||||
struct channel_user *user;
|
||||
if (!(user = channel_get_user (chan, c)))
|
||||
continue;
|
||||
channel_remove_user (chan, user);
|
||||
irc_channel_destroy_if_empty (c->ctx, chan);
|
||||
}
|
||||
str_map_unset_iter_free (&iter);
|
||||
|
||||
client_add_to_whowas (c);
|
||||
|
||||
@@ -2590,16 +2590,15 @@ irc_try_part (struct client *c, const char *channel_name, const char *reason)
|
||||
static void
|
||||
irc_part_all_channels (struct client *c)
|
||||
{
|
||||
struct str_map_iter iter;
|
||||
str_map_iter_init (&iter, &c->ctx->channels);
|
||||
struct channel *chan, *next = str_map_iter_next (&iter);
|
||||
for (chan = next; chan; chan = next)
|
||||
{
|
||||
// We have to be careful here, the channel might get destroyed
|
||||
next = str_map_iter_next (&iter);
|
||||
// We have to be careful here, the channel might get destroyed
|
||||
struct str_map_unset_iter iter;
|
||||
str_map_unset_iter_init (&iter, &c->ctx->channels);
|
||||
|
||||
struct channel *chan;
|
||||
while ((chan = str_map_unset_iter_next (&iter)))
|
||||
if (channel_get_user (chan, c))
|
||||
irc_try_part (c, chan->name, NULL);
|
||||
}
|
||||
str_map_unset_iter_free (&iter);
|
||||
}
|
||||
|
||||
static void
|
||||
|
||||
Reference in New Issue
Block a user