From a57a7de512f380787e7ce8b949cd7970a19dce13 Mon Sep 17 00:00:00 2001 From: Josef 'Jeff' Sipek Date: Tue, 22 Oct 2019 14:19:10 -0400 Subject: [PATCH] lib: events: Replace ->registered with ->internal This is in preparation for maintaining an internal category state structure. --- src/lib/event-filter.c | 2 +- src/lib/lib-event.c | 4 ++-- src/lib/lib-event.h | 7 +++++-- 3 files changed, 8 insertions(+), 5 deletions(-) diff --git a/src/lib/event-filter.c b/src/lib/event-filter.c index ac522f8cab..22fdf09946 100644 --- a/src/lib/event-filter.c +++ b/src/lib/event-filter.c @@ -669,7 +669,7 @@ static void event_filter_category_registered(struct event_category *category) struct event_filter *filter; for (filter = event_filters; filter != NULL; filter = filter->next) { - if (!category->registered) + if (category->internal == NULL) event_filter_remove_category(filter, category); else event_filter_add_missing_category(filter, category); diff --git a/src/lib/lib-event.c b/src/lib/lib-event.c index 218def6cdc..a8b1906c84 100644 --- a/src/lib/lib-event.c +++ b/src/lib/lib-event.c @@ -577,7 +577,7 @@ static void event_category_register(struct event_category *category) { event_category_callback_t *const *callbackp; - if (category->registered) + if (category->internal != NULL) return; /* register parent categories first */ @@ -587,7 +587,7 @@ static void event_category_register(struct event_category *category) /* Don't allow duplicate category structs with the same name. Event filtering uses pointer comparisons for efficiency. */ i_assert(event_category_find_registered(category->name) == NULL); - category->registered = TRUE; + category->internal = i_malloc(1); array_push_back(&event_registered_categories, &category); array_foreach(&event_category_callbacks, callbackp) T_BEGIN { diff --git a/src/lib/lib-event.h b/src/lib/lib-event.h index 6bb86d0e4f..12e4083eaf 100644 --- a/src/lib/lib-event.h +++ b/src/lib/lib-event.h @@ -14,8 +14,11 @@ struct event_category { struct event_category *parent; const char *name; - /* TRUE if this category has been registered with event_add_categories() */ - bool registered; + /* non-NULL if this category has been registered + + Do NOT dereference outside of event code in src/lib. It is safe + to check for NULL/non-NULL anywhere. */ + void *internal; }; enum event_field_value_type { -- 2.47.3