From 629e3bf7e6d568d0378beed29d2ba6d09a112bf6 Mon Sep 17 00:00:00 2001 From: Aidan Lee Date: Sat, 31 Oct 2026 11:59:40 +0000 Subject: [PATCH] Add finalisers to atomic objects --- src/hx/atomic/AtomicInt.cpp | 7 +++++++ src/hx/atomic/AtomicObject.cpp | 7 +++++++ 2 files changed, 14 insertions(+) diff --git a/src/hx/atomic/AtomicInt.cpp b/src/hx/atomic/AtomicInt.cpp index 99ad3cb7e..2c5162060 100644 --- a/src/hx/atomic/AtomicInt.cpp +++ b/src/hx/atomic/AtomicInt.cpp @@ -13,6 +13,13 @@ struct hx::atomic::AtomicInt_obj::Impl hx::atomic::AtomicInt_obj::AtomicInt_obj(int val) : impl(new Impl()) { impl->atomic.store(val); + + GCSetFinalizer(this, [](hx::Object* obj) + { + auto a = reinterpret_cast(obj); + + delete a->impl; + }); } int hx::atomic::AtomicInt_obj::fetchAdd(int val) diff --git a/src/hx/atomic/AtomicObject.cpp b/src/hx/atomic/AtomicObject.cpp index d7babd200..d489f0a44 100644 --- a/src/hx/atomic/AtomicObject.cpp +++ b/src/hx/atomic/AtomicObject.cpp @@ -15,6 +15,13 @@ hx::atomic::AtomicObject_obj::AtomicObject_obj(Dynamic val) : impl(new Impl()) impl->atomic.store(val.mPtr); HX_OBJ_WB_NEW_MARKED_OBJECT(this); + + GCSetFinalizer(this, [](hx::Object* obj) + { + auto a = reinterpret_cast(obj); + + delete a->impl; + }); } void hx::atomic::AtomicObject_obj::__Mark(HX_MARK_PARAMS)