Skip to main content

luaur_vm/functions/
lua_f_getlocal.rs

1use core::ffi::c_int;
2use core::ptr;
3
4use crate::type_aliases::loc_var::LocVar;
5use crate::type_aliases::proto::Proto;
6
7#[allow(non_snake_case)]
8pub fn luaF_getlocal(func: *const Proto, mut local_number: c_int, pc: c_int) -> *const LocVar {
9    if func.is_null() {
10        return ptr::null();
11    }
12
13    unsafe {
14        for i in 0..(*func).sizelocvars {
15            let loc = &*(*func).locvars.add(i as usize);
16            if pc >= loc.startpc && pc < loc.endpc {
17                local_number -= 1;
18                if local_number == 0 {
19                    return loc as *const LocVar;
20                }
21            }
22        }
23    }
24
25    ptr::null()
26}