Feature #240 ยป 0041-Apply-lua-5.4.6-upstream-patch-7.patch
| dependencies/lua-5.4/Version.txt | ||
|---|---|---|
|
(http://www.lua.org/ftp/lua-5.4.6.tar.gz)
|
||
|
Upstream bug fixes from https://www.lua.org/bugs.html applied:
|
||
|
1, 2, 3, 4 & 5, 6
|
||
|
1, 2, 3, 4 & 5, 6, 7
|
||
|
Not entire lua distribution directory hierarchy is included here, and
|
||
|
some files needed for Freeciv usage have been added.
|
||
| dependencies/lua-5.4/src/ldebug.c | ||
|---|---|---|
|
}
|
||
|
pc++; /* reference is always next instruction */
|
||
|
ci->u.l.savedpc = pc; /* save 'pc' */
|
||
|
counthook = (--L->hookcount == 0 && (mask & LUA_MASKCOUNT));
|
||
|
counthook = (mask & LUA_MASKCOUNT) && (--L->hookcount == 0);
|
||
|
if (counthook)
|
||
|
resethookcount(L); /* reset count */
|
||
|
else if (!(mask & LUA_MASKLINE))
|
||
|
return 1; /* no line hook and count != 0; nothing to be done now */
|
||
|
if (ci->callstatus & CIST_HOOKYIELD) { /* called hook last time? */
|
||
|
if (ci->callstatus & CIST_HOOKYIELD) { /* hook yielded last time? */
|
||
|
ci->callstatus &= ~CIST_HOOKYIELD; /* erase mark */
|
||
|
return 1; /* do not call hook again (VM yielded, so it did not move) */
|
||
|
}
|
||
| ... | ... | |
|
if (L->status == LUA_YIELD) { /* did hook yield? */
|
||
|
if (counthook)
|
||
|
L->hookcount = 1; /* undo decrement to zero */
|
||
|
ci->u.l.savedpc--; /* undo increment (resume will increment it again) */
|
||
|
ci->callstatus |= CIST_HOOKYIELD; /* mark that it yielded */
|
||
|
luaD_throw(L, LUA_YIELD);
|
||
|
}
|
||
| dependencies/lua-5.4/src/ldo.c | ||
|---|---|---|
|
lua_assert(L->status == LUA_YIELD);
|
||
|
L->status = LUA_OK; /* mark that it is running (again) */
|
||
|
if (isLua(ci)) { /* yielded inside a hook? */
|
||
|
/* undo increment made by 'luaG_traceexec': instruction was not
|
||
|
executed yet */
|
||
|
lua_assert(ci->callstatus & CIST_HOOKYIELD);
|
||
|
ci->u.l.savedpc--;
|
||
|
L->top.p = firstArg; /* discard arguments */
|
||
|
luaV_execute(L, ci); /* just continue running Lua code */
|
||
|
}
|
||