diff options
| author | Roberto Ierusalimschy <roberto@inf.puc-rio.br> | 2019-05-09 11:32:20 -0300 |
|---|---|---|
| committer | Roberto Ierusalimschy <roberto@inf.puc-rio.br> | 2019-05-09 11:32:20 -0300 |
| commit | 3f253f116e8e292977a1bded964544fb35b3d1e3 (patch) | |
| tree | 14a61596df705ea11516a24ca4b2b707a89235fd /ldo.c | |
| parent | 389116d8abcc96db3cfe2f3cc25789c089fe12d6 (diff) | |
| download | lua-3f253f116e8e292977a1bded964544fb35b3d1e3.tar.gz lua-3f253f116e8e292977a1bded964544fb35b3d1e3.tar.bz2 lua-3f253f116e8e292977a1bded964544fb35b3d1e3.zip | |
Test for dead coroutine moved to 'lua_resume'
The test for dead coroutines done in the 'coro' library was moved
to 'lua_resume', in the kernel, which already does other similar
tests.
Diffstat (limited to 'ldo.c')
| -rw-r--r-- | ldo.c | 2 |
1 files changed, 2 insertions, 0 deletions
| @@ -666,6 +666,8 @@ LUA_API int lua_resume (lua_State *L, lua_State *from, int nargs, | |||
| 666 | if (L->status == LUA_OK) { /* may be starting a coroutine */ | 666 | if (L->status == LUA_OK) { /* may be starting a coroutine */ |
| 667 | if (L->ci != &L->base_ci) /* not in base level? */ | 667 | if (L->ci != &L->base_ci) /* not in base level? */ |
| 668 | return resume_error(L, "cannot resume non-suspended coroutine", nargs); | 668 | return resume_error(L, "cannot resume non-suspended coroutine", nargs); |
| 669 | else if (L->top - (L->ci->func + 1) == nargs) /* no function? */ | ||
| 670 | return resume_error(L, "cannot resume dead coroutine", nargs); | ||
| 669 | } | 671 | } |
| 670 | else if (L->status != LUA_YIELD) | 672 | else if (L->status != LUA_YIELD) |
| 671 | return resume_error(L, "cannot resume dead coroutine", nargs); | 673 | return resume_error(L, "cannot resume dead coroutine", nargs); |
