In luaB_close, running coroutines do not go to default

This should had been corrected in commit fd897027f1.
This commit is contained in:
Roberto I 2025-12-01 10:25:44 -03:00
parent a07f6a8241
commit 985ef32248

View File

@ -189,15 +189,17 @@ static int luaB_close (lua_State *L) {
return 2;
}
}
case COS_RUN: /* running coroutine? */
case COS_NORM:
return luaL_error(L, "cannot close a %s coroutine", statname[status]);
case COS_RUN:
lua_geti(L, LUA_REGISTRYINDEX, LUA_RIDX_MAINTHREAD); /* get main */
if (lua_tothread(L, -1) == co)
return luaL_error(L, "cannot close main thread");
lua_closethread(co, L); /* close itself */
lua_assert(0); /* previous call does not return */
/* previous call does not return *//* FALLTHROUGH */
default:
lua_assert(0);
return 0;
default: /* normal or running coroutine */
return luaL_error(L, "cannot close a %s coroutine", statname[status]);
}
}