changeset 26700:d1ba0f1a3a2c

lib: Free internal event categories on lib deinit
author Josef 'Jeff' Sipek <jeff.sipek@open-xchange.com>
date Mon, 02 Dec 2019 08:51:34 -0500
parents cb6e085f8d2d
children 031f80581031
files src/lib/lib-event.c
diffstat 1 files changed, 9 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- a/src/lib/lib-event.c	Wed Nov 27 15:49:52 2019 -0500
+++ b/src/lib/lib-event.c	Mon Dec 02 08:51:34 2019 -0500
@@ -1329,6 +1329,8 @@
 
 void lib_event_deinit(void)
 {
+	struct event_internal_category **internal;
+
 	event_unset_global_debug_log_filter();
 	event_unset_global_debug_send_filter();
 	event_unset_global_core_log_filter();
@@ -1337,6 +1339,13 @@
 			  event, event->parent,
 			  event->source_filename, event->source_linenum);
 	}
+	/* categories cannot be unregistered, so just free them here */
+	array_foreach_modifiable(&event_registered_categories_internal, internal) {
+		struct event_internal_category *cur = *internal;
+
+		i_free(cur->name);
+		i_free(cur);
+	}
 	array_free(&event_handlers);
 	array_free(&event_category_callbacks);
 	array_free(&event_registered_categories_internal);