Skip to main content

luaur_vm/functions/
getfuncname.rs

1use crate::macros::getstr::getstr;
2use crate::records::closure::Closure;
3use crate::type_aliases::proto::Proto;
4
5pub fn getfuncname(cl: *mut Closure) -> *const core::ffi::c_char {
6    unsafe {
7        if cl.is_null() {
8            return core::ptr::null();
9        }
10
11        if (*cl).isC != 0 {
12            let c_debugname = (&(*cl).inner.c).debugname;
13            if !c_debugname.is_null() {
14                c_debugname
15            } else {
16                core::ptr::null()
17            }
18        } else {
19            let p: *mut Proto = (&(*cl).inner.l).p;
20
21            if !p.is_null() {
22                let p_debugname = (&(*p)).debugname;
23                if !p_debugname.is_null() {
24                    getstr(p_debugname)
25                } else {
26                    core::ptr::null()
27                }
28            } else {
29                core::ptr::null()
30            }
31        }
32    }
33}