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; | ||||
| } | ||||
| 
 | ||||
| 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 -----------------------------------------------------------------
 | ||||
| 
 | ||||
| static void | ||||
|  | ||||
							
								
								
									
										12
									
								
								degesch.c
									
									
									
									
									
								
							
							
						
						
									
										12
									
								
								degesch.c
									
									
									
									
									
								
							| @ -6567,14 +6567,12 @@ server_remove (struct app_context *ctx, struct server *s) | ||||
| 	if (s->buffer) | ||||
| 		buffer_remove_safe (ctx, s->buffer); | ||||
| 
 | ||||
| 	struct str_map_iter iter; | ||||
| 	str_map_iter_init (&iter, &s->irc_buffer_map); | ||||
| 	struct buffer *buffer, *next = str_map_iter_next (&iter); | ||||
| 	for (buffer = next; buffer; buffer = next) | ||||
| 	{ | ||||
| 		next = str_map_iter_next (&iter); | ||||
| 	struct str_map_unset_iter iter; | ||||
| 	str_map_unset_iter_init (&iter, &s->irc_buffer_map); | ||||
| 	struct buffer *buffer; | ||||
| 	while ((buffer = str_map_unset_iter_next (&iter))) | ||||
| 		buffer_remove_safe (ctx, buffer); | ||||
| 	} | ||||
| 	str_map_unset_iter_free (&iter); | ||||
| 
 | ||||
| 	hard_assert (!s->buffer); | ||||
| 	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); | ||||
| 	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 | ||||
|  | ||||
							
								
								
									
										2
									
								
								liberty
									
									
									
									
									
								
							
							
								
								
								
								
								
								
									
									
								
							
						
						
									
										2
									
								
								liberty
									
									
									
									
									
								
							| @ -1 +1 @@ | ||||
| Subproject commit 7fa873fb964156e71a00174f50e3f4bc343bcc04 | ||||
| Subproject commit 0058c1f457a954fbdfc63f458fa00c3c5a700f69 | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user