From d3b032666bf5e3670eb9eff4538feab4b5cb3f62 Mon Sep 17 00:00:00 2001 From: Ukendio Date: Fri, 25 Apr 2025 23:53:09 +0200 Subject: [PATCH] Index is not a stable pointer --- addons/observers.luau | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/addons/observers.luau b/addons/observers.luau index c2f1254..5f3f1f5 100644 --- a/addons/observers.luau +++ b/addons/observers.luau @@ -215,11 +215,11 @@ local function observers_add(world: jecs.World & { [string]: any }): PatchedWorl end world:set(component, jecs.OnAdd, on_add) end - local max = #listeners + 1 - listeners[max] = fn + table.insert(listeners, fn) return function() local n = #listeners - listeners[max] = listeners[n] + local i = table.find(listeners, fn) + listeners[i] = listeners[n] listeners[n] = nil end end @@ -238,11 +238,11 @@ local function observers_add(world: jecs.World & { [string]: any }): PatchedWorl end world:set(component, jecs.OnChange, on_change) end - local max = #listeners + 1 - listeners[max] = fn + table.insert(listeners, fn) return function() local n = #listeners - listeners[max] = listeners[n] + local i = table.find(listeners, fn) + listeners[i] = listeners[n] listeners[n] = nil end end @@ -261,11 +261,11 @@ local function observers_add(world: jecs.World & { [string]: any }): PatchedWorl end world:set(component, jecs.OnRemove, on_remove) end - local max = #listeners + 1 - listeners[max] = fn + table.insert(listeners, fn) return function() local n = #listeners - listeners[max] = listeners[n] + local i = table.find(listeners, fn) + listeners[i] = listeners[n] listeners[n] = nil end end