aboutsummaryrefslogtreecommitdiff
path: root/ldo.c
diff options
context:
space:
mode:
Diffstat (limited to 'ldo.c')
-rw-r--r--ldo.c6
1 files changed, 4 insertions, 2 deletions
diff --git a/ldo.c b/ldo.c
index d0edc8b4..66f89036 100644
--- a/ldo.c
+++ b/ldo.c
@@ -759,11 +759,10 @@ static void resume (lua_State *L, void *ud) {
759 StkId firstArg = L->top - n; /* first argument */ 759 StkId firstArg = L->top - n; /* first argument */
760 CallInfo *ci = L->ci; 760 CallInfo *ci = L->ci;
761 if (L->status == LUA_OK) /* starting a coroutine? */ 761 if (L->status == LUA_OK) /* starting a coroutine? */
762 ccall(L, firstArg - 1, LUA_MULTRET, 1); /* just call its body */ 762 ccall(L, firstArg - 1, LUA_MULTRET, 0); /* just call its body */
763 else { /* resuming from previous yield */ 763 else { /* resuming from previous yield */
764 lua_assert(L->status == LUA_YIELD); 764 lua_assert(L->status == LUA_YIELD);
765 L->status = LUA_OK; /* mark that it is running (again) */ 765 L->status = LUA_OK; /* mark that it is running (again) */
766 luaE_incCstack(L); /* control the C stack */
767 if (isLua(ci)) { /* yielded inside a hook? */ 766 if (isLua(ci)) { /* yielded inside a hook? */
768 L->top = firstArg; /* discard arguments */ 767 L->top = firstArg; /* discard arguments */
769 luaV_execute(L, ci); /* just continue running Lua code */ 768 luaV_execute(L, ci); /* just continue running Lua code */
@@ -814,6 +813,9 @@ LUA_API int lua_resume (lua_State *L, lua_State *from, int nargs,
814 else if (L->status != LUA_YIELD) /* ended with errors? */ 813 else if (L->status != LUA_YIELD) /* ended with errors? */
815 return resume_error(L, "cannot resume dead coroutine", nargs); 814 return resume_error(L, "cannot resume dead coroutine", nargs);
816 L->nCcalls = (from) ? getCcalls(from) : 0; 815 L->nCcalls = (from) ? getCcalls(from) : 0;
816 if (getCcalls(L) >= LUAI_MAXCCALLS)
817 return resume_error(L, "C stack overflow", nargs);
818 L->nCcalls++;
817 luai_userstateresume(L, nargs); 819 luai_userstateresume(L, nargs);
818 api_checknelems(L, (L->status == LUA_OK) ? nargs + 1 : nargs); 820 api_checknelems(L, (L->status == LUA_OK) ? nargs + 1 : nargs);
819 status = luaD_rawrunprotected(L, resume, &nargs); 821 status = luaD_rawrunprotected(L, resume, &nargs);