mirror of
https://gitcode.com/JianFeeeee/LuaCangjia_api.git
synced 2026-09-21 17:38:12 +00:00
feat: 适配 Lua 5.5.1 最新版 (lua_5.5.1 分支)
- lib/lua 替换为 Lua 5.5.1 官方源码(2026-07 发布, 当前最新) - luaconf.h LUA_EXTRASPACE 扩为 272 字节(与 5.4.8 同方案) - C API 完全兼容, 桥接层零改动 - PackagePathConfig 测试沿用跨版本语义断言(5.4+ require 返回 loader data 路径) - 验证: GTest 44/44 通过
This commit is contained in:
21
lib/lua/lcorolib.c
Executable file → Normal file
21
lib/lua/lcorolib.c
Executable file → Normal file
@ -16,6 +16,7 @@
|
||||
|
||||
#include "lauxlib.h"
|
||||
#include "lualib.h"
|
||||
#include "llimits.h"
|
||||
|
||||
|
||||
static lua_State *getco (lua_State *L) {
|
||||
@ -153,8 +154,13 @@ static int luaB_costatus (lua_State *L) {
|
||||
}
|
||||
|
||||
|
||||
static lua_State *getoptco (lua_State *L) {
|
||||
return (lua_isnone(L, 1) ? L : getco(L));
|
||||
}
|
||||
|
||||
|
||||
static int luaB_yieldable (lua_State *L) {
|
||||
lua_State *co = lua_isnone(L, 1) ? L : getco(L);
|
||||
lua_State *co = getoptco(L);
|
||||
lua_pushboolean(L, lua_isyieldable(co));
|
||||
return 1;
|
||||
}
|
||||
@ -168,7 +174,7 @@ static int luaB_corunning (lua_State *L) {
|
||||
|
||||
|
||||
static int luaB_close (lua_State *L) {
|
||||
lua_State *co = getco(L);
|
||||
lua_State *co = getoptco(L);
|
||||
int status = auxstatus(L, co);
|
||||
switch (status) {
|
||||
case COS_DEAD: case COS_YIELD: {
|
||||
@ -183,8 +189,17 @@ static int luaB_close (lua_State *L) {
|
||||
return 2;
|
||||
}
|
||||
}
|
||||
default: /* normal or 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 */
|
||||
/* previous call does not return *//* FALLTHROUGH */
|
||||
default:
|
||||
lua_assert(0);
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user