(minor) Fix capturing variables in protect_lua closures

This commit is contained in:
Alex Orlenko 2022-04-08 20:13:38 +01:00
parent 28a063c1e5
commit a8fef51e86
No known key found for this signature in database
GPG Key ID: 4C150C250863B96D
1 changed files with 12 additions and 12 deletions

View File

@ -914,16 +914,16 @@ impl<'lua> AnyUserData<'lua> {
// Multiple (extra) user values are emulated by storing them in a table // Multiple (extra) user values are emulated by storing them in a table
protect_lua!(lua.state, 2, 0, |state| { protect_lua!(lua.state, 2, 0, |state| {
if getuservalue_table(lua.state, -2) != ffi::LUA_TTABLE { if getuservalue_table(state, -2) != ffi::LUA_TTABLE {
// Create a new table to use as uservalue // Create a new table to use as uservalue
ffi::lua_pop(lua.state, 1); ffi::lua_pop(state, 1);
ffi::lua_newtable(state); ffi::lua_newtable(state);
ffi::lua_pushvalue(state, -1); ffi::lua_pushvalue(state, -1);
#[cfg(feature = "lua54")] #[cfg(feature = "lua54")]
ffi::lua_setiuservalue(lua.state, -4, USER_VALUE_MAXSLOT as c_int); ffi::lua_setiuservalue(state, -4, USER_VALUE_MAXSLOT as c_int);
#[cfg(not(feature = "lua54"))] #[cfg(not(feature = "lua54"))]
ffi::lua_setuservalue(lua.state, -4); ffi::lua_setuservalue(state, -4);
} }
ffi::lua_pushvalue(state, -2); ffi::lua_pushvalue(state, -2);
#[cfg(feature = "lua54")] #[cfg(feature = "lua54")]
@ -967,8 +967,8 @@ impl<'lua> AnyUserData<'lua> {
// Multiple (extra) user values are emulated by storing them in a table // Multiple (extra) user values are emulated by storing them in a table
protect_lua!(lua.state, 1, 1, |state| { protect_lua!(lua.state, 1, 1, |state| {
if getuservalue_table(lua.state, -1) != ffi::LUA_TTABLE { if getuservalue_table(state, -1) != ffi::LUA_TTABLE {
ffi::lua_pushnil(lua.state); ffi::lua_pushnil(state);
return; return;
} }
#[cfg(feature = "lua54")] #[cfg(feature = "lua54")]
@ -1002,16 +1002,16 @@ impl<'lua> AnyUserData<'lua> {
// Multiple (extra) user values are emulated by storing them in a table // Multiple (extra) user values are emulated by storing them in a table
let name = name.as_ref(); let name = name.as_ref();
protect_lua!(lua.state, 2, 0, |state| { protect_lua!(lua.state, 2, 0, |state| {
if getuservalue_table(lua.state, -2) != ffi::LUA_TTABLE { if getuservalue_table(state, -2) != ffi::LUA_TTABLE {
// Create a new table to use as uservalue // Create a new table to use as uservalue
ffi::lua_pop(lua.state, 1); ffi::lua_pop(state, 1);
ffi::lua_newtable(state); ffi::lua_newtable(state);
ffi::lua_pushvalue(state, -1); ffi::lua_pushvalue(state, -1);
#[cfg(feature = "lua54")] #[cfg(feature = "lua54")]
ffi::lua_setiuservalue(lua.state, -4, USER_VALUE_MAXSLOT as c_int); ffi::lua_setiuservalue(state, -4, USER_VALUE_MAXSLOT as c_int);
#[cfg(not(feature = "lua54"))] #[cfg(not(feature = "lua54"))]
ffi::lua_setuservalue(lua.state, -4); ffi::lua_setuservalue(state, -4);
} }
ffi::lua_pushlstring(state, name.as_ptr() as *const c_char, name.len()); ffi::lua_pushlstring(state, name.as_ptr() as *const c_char, name.len());
ffi::lua_pushvalue(state, -3); ffi::lua_pushvalue(state, -3);
@ -1040,8 +1040,8 @@ impl<'lua> AnyUserData<'lua> {
// Multiple (extra) user values are emulated by storing them in a table // Multiple (extra) user values are emulated by storing them in a table
let name = name.as_ref(); let name = name.as_ref();
protect_lua!(lua.state, 1, 1, |state| { protect_lua!(lua.state, 1, 1, |state| {
if getuservalue_table(lua.state, -1) != ffi::LUA_TTABLE { if getuservalue_table(state, -1) != ffi::LUA_TTABLE {
ffi::lua_pushnil(lua.state); ffi::lua_pushnil(state);
return; return;
} }
ffi::lua_pushlstring(state, name.as_ptr() as *const c_char, name.len()); ffi::lua_pushlstring(state, name.as_ptr() as *const c_char, name.len());