Skip to main content

luaur_code_gen/methods/
native_module_release.rs

1use crate::records::native_module::NativeModule;
2use core::sync::atomic::Ordering;
3
4impl NativeModule {
5    pub fn native_module_release(&self) -> usize {
6        self.release()
7    }
8
9    pub fn release(&self) -> usize {
10        let new_refcount = self.refcount.fetch_sub(1, Ordering::SeqCst).wrapping_sub(1);
11        if new_refcount != 0 {
12            return new_refcount;
13        }
14
15        unsafe {
16            (*self.allocator).erase_native_module_if_unreferenced(self);
17        }
18
19        0
20    }
21}