From 9fdd28fe5a7cff976d17756172682cb148c4278e Mon Sep 17 00:00:00 2001 From: copygirl Date: Fri, 4 Nov 2022 23:35:40 +0100 Subject: [PATCH] Fix double-use of TempAllocator with observers --- src/gaemstone/ECS/Observer.cs | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/gaemstone/ECS/Observer.cs b/src/gaemstone/ECS/Observer.cs index 398b1ab..b9b3759 100644 --- a/src/gaemstone/ECS/Observer.cs +++ b/src/gaemstone/ECS/Observer.cs @@ -21,16 +21,16 @@ public static class ObserverExtensions public static unsafe EntityRef RegisterObserver(this Universe universe, FilterDesc filter, Entity @event, Action callback) { + var entity = universe.New((filter.Name != null) ? new(filter.Name) : null).Build(); using var alloc = TempAllocator.Lock(); var desc = new ecs_observer_desc_t { filter = filter.ToFlecs(alloc), - entity = universe.New((filter.Name != null) ? new(filter.Name) : null).Build(), + entity = entity, binding_ctx = (void*)CallbackContextHelper.Create((universe, callback)), callback = new() { Data = new() { Pointer = &SystemExtensions.Callback } }, }; desc.events[0] = @event; - var entity = ecs_observer_init(universe, &desc); - return new(universe, new(entity)); + return new(universe, new(ecs_observer_init(universe, &desc))); } public static EntityRef RegisterObserver(this Universe universe,