Skip to main content

luaur_vm/functions/
lua_f_findlocal.rs

1use core::ffi::c_int;
2
3use crate::records::loc_var::LocVar;
4use crate::records::proto::Proto;
5
6#[allow(non_snake_case)]
7pub unsafe fn luaF_findlocal(f: *const Proto, local_reg: c_int, pc: c_int) -> *const LocVar {
8    let mut i: c_int = 0;
9    let sizelocvars = (*f).sizelocvars;
10    let locvars = (*f).locvars;
11
12    while i < sizelocvars {
13        let locvar = &*locvars.add(i as usize);
14        if local_reg == locvar.reg as c_int && pc >= locvar.startpc && pc < locvar.endpc {
15            return locvars.add(i as usize) as *const LocVar;
16        }
17        i += 1;
18    }
19
20    core::ptr::null()
21}