diff --git a/libs/ecs/ecs.c b/libs/ecs/ecs.c index b00c85422..86f28a0d8 100644 --- a/libs/ecs/ecs.c +++ b/libs/ecs/ecs.c @@ -50,10 +50,11 @@ ECS_DelRegistry (ecs_registry_t *registry) return; } registry->locked = 1; - for (uint32_t i = 0; i < registry->components.size; i++) { + for (uint32_t i = registry->components.size; i-- > 0 ;) { __auto_type comp = ®istry->components.a[i]; __auto_type pool = ®istry->comp_pools[i]; Component_DestroyElements (comp, pool->data, 0, pool->count); + pool->count = 0; } free (registry->entities); for (uint32_t i = 0; i < registry->components.size; i++) {