From: Josef 'Jeff' Sipek Date: Tue, 22 Oct 2019 18:19:10 +0000 (-0400) Subject: lib: events: Replace ->registered with ->internal X-Git-Tag: 2.3.9~36 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=ede9f069c92ca6bbe193160af1c09bfb0dd5242b;p=thirdparty%2Fdovecot%2Fcore.git lib: events: Replace ->registered with ->internal This is in preparation for maintaining an internal category state structure. --- 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 {