Skip to main content

luaur_vm/functions/
lua_l_addlstring.rs

1use crate::functions::extendstrbuf::extendstrbuf;
2use crate::type_aliases::lua_l_strbuf::LuaLStrbuf;
3use core::ffi::c_char;
4use core::ptr::copy_nonoverlapping;
5
6pub fn lua_l_addlstring(B: *mut LuaLStrbuf, s: *const c_char, len: usize) {
7    unsafe {
8        let current_buffer_size = (*B).end.offset_from((*B).p) as usize;
9        if current_buffer_size < len as usize {
10            extendstrbuf(B, len - current_buffer_size, -1);
11        }
12
13        copy_nonoverlapping(s as *const u8, (*B).p as *mut u8, len);
14        (*B).p = (*B).p.offset(len as isize);
15    }
16}