(minor) Fix capturing variables in protect_lua closures
This commit is contained in:
parent
28a063c1e5
commit
a8fef51e86
|
@ -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());
|
||||||
|
|
Loading…
Reference in New Issue