diff options
| author | Roberto Ierusalimschy <roberto@inf.puc-rio.br> | 2021-01-13 13:54:10 -0300 |
|---|---|---|
| committer | Roberto Ierusalimschy <roberto@inf.puc-rio.br> | 2021-01-13 13:54:10 -0300 |
| commit | b07fc10e91a5954254b47280aba287220c734a4b (patch) | |
| tree | e50d4e5ef9aab68487caf0944e72a7de04bb8bb5 /lstate.c | |
| parent | cc1692515e2a6aabc6d07159e7926656e38eda53 (diff) | |
| download | lua-b07fc10e91a5954254b47280aba287220c734a4b.tar.gz lua-b07fc10e91a5954254b47280aba287220c734a4b.tar.bz2 lua-b07fc10e91a5954254b47280aba287220c734a4b.zip | |
Allow yields inside '__close' metamethods
Initial implementation to allow yields inside '__close' metamethods.
This current version still does not allow a '__close' metamethod
to yield when called due to an error. '__close' metamethods from
C functions also are not allowed to yield.
Diffstat (limited to 'lstate.c')
| -rw-r--r-- | lstate.c | 2 |
1 files changed, 1 insertions, 1 deletions
| @@ -313,7 +313,7 @@ LUA_API lua_State *lua_newthread (lua_State *L) { | |||
| 313 | 313 | ||
| 314 | void luaE_freethread (lua_State *L, lua_State *L1) { | 314 | void luaE_freethread (lua_State *L, lua_State *L1) { |
| 315 | LX *l = fromstate(L1); | 315 | LX *l = fromstate(L1); |
| 316 | luaF_close(L1, L1->stack, NOCLOSINGMETH); /* close all upvalues */ | 316 | luaF_close(L1, L1->stack, NOCLOSINGMETH, 0); /* close all upvalues */ |
| 317 | lua_assert(L1->openupval == NULL); | 317 | lua_assert(L1->openupval == NULL); |
| 318 | luai_userstatefree(L, L1); | 318 | luai_userstatefree(L, L1); |
| 319 | freestack(L1); | 319 | freestack(L1); |
