diff --git a/src/addons/rules/api.c b/src/addons/rules/api.c index 35e493586..764d4b492 100644 --- a/src/addons/rules/api.c +++ b/src/addons/rules/api.c @@ -103,6 +103,13 @@ void flecs_rule_fini( ecs_poly_free(rule, ecs_rule_t); } +/* ecs_poly_dtor_t-compatible wrapper */ +static +void flecs_rule_fini_poly(void *rule) +{ + flecs_rule_fini(rule); +} + void ecs_rule_fini( ecs_rule_t *rule) { @@ -137,7 +144,7 @@ ecs_rule_t* ecs_rule_init( } ecs_entity_t entity = const_desc->entity; - result->dtor = (ecs_poly_dtor_t)flecs_rule_fini; + result->dtor = flecs_rule_fini_poly; if (entity) { EcsPoly *poly = ecs_poly_bind(world, entity, ecs_rule_t); diff --git a/src/addons/system/system.c b/src/addons/system/system.c index e4b04b3d2..a9df0a728 100644 --- a/src/addons/system/system.c +++ b/src/addons/system/system.c @@ -230,6 +230,13 @@ void flecs_system_fini(ecs_system_t *sys) { ecs_poly_free(sys, ecs_system_t); } +/* ecs_poly_dtor_t-compatible wrapper */ +static +void flecs_system_fini_poly(void *sys) +{ + flecs_system_fini(sys); +} + static void flecs_system_init_timer( ecs_world_t *world, @@ -282,7 +289,7 @@ ecs_entity_t ecs_system_init( poly->poly = system; system->world = world; - system->dtor = (ecs_poly_dtor_t)flecs_system_fini; + system->dtor = flecs_system_fini_poly; system->entity = entity; ecs_query_desc_t query_desc = desc->query; diff --git a/src/filter.c b/src/filter.c index 0be6c4da7..91a541810 100644 --- a/src/filter.c +++ b/src/filter.c @@ -1502,6 +1502,13 @@ void flecs_filter_fini( } } +/* ecs_poly_dtor_t-compatible wrapper */ +static +void flecs_filter_fini_poly(void *filter) +{ + flecs_filter_fini(filter); +} + void ecs_filter_fini( ecs_filter_t *filter) { @@ -1707,7 +1714,7 @@ ecs_filter_t* ecs_filter_init( f->variable_names[0] = NULL; f->iterable.init = flecs_filter_iter_init; - f->dtor = (ecs_poly_dtor_t)flecs_filter_fini; + f->dtor = flecs_filter_fini_poly; f->entity = entity; f->eval_count = 0; diff --git a/src/observer.c b/src/observer.c index a8f409665..0dd955552 100644 --- a/src/observer.c +++ b/src/observer.c @@ -874,6 +874,13 @@ int flecs_multi_observer_init( return -1; } +/* ecs_poly_dtor_t-compatible wrapper */ +static +void flecs_observer_fini_poly(void *observer) +{ + flecs_observer_fini(observer); +} + ecs_entity_t ecs_observer_init( ecs_world_t *world, const ecs_observer_desc_t *desc) @@ -895,7 +902,7 @@ ecs_entity_t ecs_observer_init( ecs_observer_t *observer = ecs_poly_new(ecs_observer_t); ecs_assert(observer != NULL, ECS_INTERNAL_ERROR, NULL); - observer->dtor = (ecs_poly_dtor_t)flecs_observer_fini; + observer->dtor = flecs_observer_fini_poly; /* Make writeable copy of filter desc so that we can set name. This will * make debugging easier, as any error messages related to creating the diff --git a/src/query.c b/src/query.c index 96e22d9cb..014c19cd8 100644 --- a/src/query.c +++ b/src/query.c @@ -2034,6 +2034,13 @@ void flecs_query_fini( ecs_poly_free(query, ecs_query_t); } +/* ecs_poly_dtor_t-compatible wrapper */ +static +void flecs_query_fini_poly(void *query) +{ + flecs_query_fini(query); +} + /* -- Public API -- */ ecs_query_t* ecs_query_init( @@ -2098,7 +2105,7 @@ ecs_query_t* ecs_query_init( } result->iterable.init = flecs_query_iter_init; - result->dtor = (ecs_poly_dtor_t)flecs_query_fini; + result->dtor = flecs_query_fini_poly; result->prev_match_count = -1; result->ctx = desc->ctx;