Skip to main content

luaur_vm/functions/
lua_s_bufstart.rs

1use crate::functions::lua_m_toobig::lua_m_toobig;
2use crate::macros::atom_undef::ATOM_UNDEF;
3use crate::macros::lua_c_init::luaC_init;
4use crate::macros::maxssize::MAXSSIZE;
5use crate::macros::sizestring::sizestring;
6use crate::records::t_string::TString;
7use crate::type_aliases::lua_state::lua_State;
8use core::ffi::c_int;
9
10#[allow(non_snake_case)]
11pub unsafe fn luaS_bufstart(l: *mut lua_State, size: usize) -> *mut TString {
12    if size > MAXSSIZE as usize {
13        lua_m_toobig(l);
14    }
15
16    let ts = crate::functions::lua_m_newgco::luaM_newgco_(l, sizestring(size), (*l).activememcat)
17        as *mut TString;
18
19    luaC_init!(
20        l,
21        ts,
22        crate::enums::lua_type::lua_Type::LUA_TSTRING as c_int
23    );
24    (*ts).atom = ATOM_UNDEF as i16;
25    (*ts).hash = 0;
26    (*ts).len = size as u32;
27    (*ts).next = core::ptr::null_mut();
28
29    ts
30}
31
32#[allow(unused_imports)]
33pub use luaS_bufstart as lua_s_bufstart;