Bump liberty, fix map iterators
This commit is contained in:
parent
955552f4fa
commit
d6a4ca1434
11
common.c
11
common.c
|
@ -70,17 +70,6 @@ str_vector_find (const struct str_vector *v, const char *s)
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void *
|
|
||||||
str_map_steal (struct str_map *self, const char *key)
|
|
||||||
{
|
|
||||||
void *value = str_map_find (self, key);
|
|
||||||
void (*free_backup) (void *) = self->free;
|
|
||||||
self->free = NULL;
|
|
||||||
str_map_set (self, key, NULL);
|
|
||||||
self->free = free_backup;
|
|
||||||
return value;
|
|
||||||
}
|
|
||||||
|
|
||||||
// --- Logging -----------------------------------------------------------------
|
// --- Logging -----------------------------------------------------------------
|
||||||
|
|
||||||
static void
|
static void
|
||||||
|
|
12
degesch.c
12
degesch.c
|
@ -6567,14 +6567,12 @@ server_remove (struct app_context *ctx, struct server *s)
|
||||||
if (s->buffer)
|
if (s->buffer)
|
||||||
buffer_remove_safe (ctx, s->buffer);
|
buffer_remove_safe (ctx, s->buffer);
|
||||||
|
|
||||||
struct str_map_iter iter;
|
struct str_map_unset_iter iter;
|
||||||
str_map_iter_init (&iter, &s->irc_buffer_map);
|
str_map_unset_iter_init (&iter, &s->irc_buffer_map);
|
||||||
struct buffer *buffer, *next = str_map_iter_next (&iter);
|
struct buffer *buffer;
|
||||||
for (buffer = next; buffer; buffer = next)
|
while ((buffer = str_map_unset_iter_next (&iter)))
|
||||||
{
|
|
||||||
next = str_map_iter_next (&iter);
|
|
||||||
buffer_remove_safe (ctx, buffer);
|
buffer_remove_safe (ctx, buffer);
|
||||||
}
|
str_map_unset_iter_free (&iter);
|
||||||
|
|
||||||
hard_assert (!s->buffer);
|
hard_assert (!s->buffer);
|
||||||
hard_assert (!s->irc_buffer_map.len);
|
hard_assert (!s->irc_buffer_map.len);
|
||||||
|
|
25
kike.c
25
kike.c
|
@ -870,18 +870,18 @@ client_unregister (struct client *c, const char *reason)
|
||||||
irc_send_to_roommates (c, message);
|
irc_send_to_roommates (c, message);
|
||||||
free (message);
|
free (message);
|
||||||
|
|
||||||
struct str_map_iter iter;
|
struct str_map_unset_iter iter;
|
||||||
str_map_iter_init (&iter, &c->ctx->channels);
|
str_map_unset_iter_init (&iter, &c->ctx->channels);
|
||||||
struct channel *chan, *next = str_map_iter_next (&iter);
|
struct channel *chan;
|
||||||
for (chan = next; chan; chan = next)
|
while ((chan = str_map_unset_iter_next (&iter)))
|
||||||
{
|
{
|
||||||
next = str_map_iter_next (&iter);
|
|
||||||
struct channel_user *user;
|
struct channel_user *user;
|
||||||
if (!(user = channel_get_user (chan, c)))
|
if (!(user = channel_get_user (chan, c)))
|
||||||
continue;
|
continue;
|
||||||
channel_remove_user (chan, user);
|
channel_remove_user (chan, user);
|
||||||
irc_channel_destroy_if_empty (c->ctx, chan);
|
irc_channel_destroy_if_empty (c->ctx, chan);
|
||||||
}
|
}
|
||||||
|
str_map_unset_iter_free (&iter);
|
||||||
|
|
||||||
client_add_to_whowas (c);
|
client_add_to_whowas (c);
|
||||||
|
|
||||||
|
@ -2590,16 +2590,15 @@ irc_try_part (struct client *c, const char *channel_name, const char *reason)
|
||||||
static void
|
static void
|
||||||
irc_part_all_channels (struct client *c)
|
irc_part_all_channels (struct client *c)
|
||||||
{
|
{
|
||||||
struct str_map_iter iter;
|
// We have to be careful here, the channel might get destroyed
|
||||||
str_map_iter_init (&iter, &c->ctx->channels);
|
struct str_map_unset_iter iter;
|
||||||
struct channel *chan, *next = str_map_iter_next (&iter);
|
str_map_unset_iter_init (&iter, &c->ctx->channels);
|
||||||
for (chan = next; chan; chan = next)
|
|
||||||
{
|
struct channel *chan;
|
||||||
// We have to be careful here, the channel might get destroyed
|
while ((chan = str_map_unset_iter_next (&iter)))
|
||||||
next = str_map_iter_next (&iter);
|
|
||||||
if (channel_get_user (chan, c))
|
if (channel_get_user (chan, c))
|
||||||
irc_try_part (c, chan->name, NULL);
|
irc_try_part (c, chan->name, NULL);
|
||||||
}
|
str_map_unset_iter_free (&iter);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
|
|
2
liberty
2
liberty
|
@ -1 +1 @@
|
||||||
Subproject commit 7fa873fb964156e71a00174f50e3f4bc343bcc04
|
Subproject commit 0058c1f457a954fbdfc63f458fa00c3c5a700f69
|
Loading…
Reference in New Issue