'main_state' fix
Dont' confuse the state we're pushing the registry value for the main state to with the main state itself, pop from the correct state.
This commit is contained in:
parent
3adacd5589
commit
a2b77f37a2
11
src/tests.rs
11
src/tests.rs
|
@ -882,3 +882,14 @@ fn string_views() {
|
|||
assert!(err.to_str().is_err());
|
||||
assert_eq!(err.as_bytes(), &b"but \xff isn't :("[..]);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn coroutine_from_closure() {
|
||||
let lua = Lua::new();
|
||||
let thrd_main = lua.create_function(|lua, _| {
|
||||
lua.pack(())
|
||||
});
|
||||
lua.globals().set("main", thrd_main).unwrap();
|
||||
let thrd: Thread = lua.eval("coroutine.create(main)", None).unwrap();
|
||||
thrd.resume::<_, ()>(()).unwrap();
|
||||
}
|
||||
|
|
|
@ -478,9 +478,9 @@ pub unsafe extern "C" fn safe_xpcall(state: *mut ffi::lua_State) -> c_int {
|
|||
/// Does not call checkstack, uses 1 stack space
|
||||
pub unsafe fn main_state(state: *mut ffi::lua_State) -> *mut ffi::lua_State {
|
||||
ffi::lua_rawgeti(state, ffi::LUA_REGISTRYINDEX, ffi::LUA_RIDX_MAINTHREAD);
|
||||
let state = ffi::lua_tothread(state, -1);
|
||||
let main_state = ffi::lua_tothread(state, -1);
|
||||
ffi::lua_pop(state, 1);
|
||||
state
|
||||
main_state
|
||||
}
|
||||
|
||||
pub struct WrappedError(pub Error);
|
||||
|
|
Loading…
Reference in New Issue