mirror of
https://github.com/lua/lua
synced 2026-09-26 16:17:11 +03:00
bug: Resuming the running coroutine makes it unyieldable
This commit is contained in:
parent
2fb7d94bd6
commit
6867055546
1 changed files with 3 additions and 2 deletions
5
ldo.c
5
ldo.c
|
|
@ -1,5 +1,5 @@
|
|||
/*
|
||||
** $Id: ldo.c,v 2.108.1.1 2013/04/12 18:48:47 roberto Exp roberto $
|
||||
** $Id: ldo.c,v 2.108.1.2 2013/04/19 21:03:23 roberto Exp roberto $
|
||||
** Stack and Call structure of Lua
|
||||
** See Copyright Notice in lua.h
|
||||
*/
|
||||
|
|
@ -534,6 +534,7 @@ static void resume (lua_State *L, void *ud) {
|
|||
|
||||
LUA_API int lua_resume (lua_State *L, lua_State *from, int nargs) {
|
||||
int status;
|
||||
int oldnny = L->nny; /* save 'nny' */
|
||||
lua_lock(L);
|
||||
luai_userstateresume(L, nargs);
|
||||
L->nCcalls = (from) ? from->nCcalls + 1 : 1;
|
||||
|
|
@ -555,7 +556,7 @@ LUA_API int lua_resume (lua_State *L, lua_State *from, int nargs) {
|
|||
}
|
||||
lua_assert(status == L->status);
|
||||
}
|
||||
L->nny = 1; /* do not allow yields */
|
||||
L->nny = oldnny; /* restore 'nny' */
|
||||
L->nCcalls--;
|
||||
lua_assert(L->nCcalls == ((from) ? from->nCcalls : 0));
|
||||
lua_unlock(L);
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue