mirror of
https://github.com/LuaJIT/LuaJIT.git
synced 2025-02-08 07:34:07 +00:00
Merge branch 'master' into v2.1
This commit is contained in:
commit
c821e0aded
20
src/lj_err.c
20
src/lj_err.c
@ -720,9 +720,23 @@ LJ_NOINLINE void lj_err_arg(lua_State *L, int narg, ErrMsg em)
|
|||||||
/* Typecheck error for arguments. */
|
/* Typecheck error for arguments. */
|
||||||
LJ_NOINLINE void lj_err_argtype(lua_State *L, int narg, const char *xname)
|
LJ_NOINLINE void lj_err_argtype(lua_State *L, int narg, const char *xname)
|
||||||
{
|
{
|
||||||
TValue *o = narg < 0 ? L->top + narg : L->base + narg-1;
|
const char *tname, *msg;
|
||||||
const char *tname = o < L->top ? lj_typename(o) : lj_obj_typename[0];
|
if (narg <= LUA_REGISTRYINDEX) {
|
||||||
const char *msg = lj_strfmt_pushf(L, err2msg(LJ_ERR_BADTYPE), xname, tname);
|
if (narg >= LUA_GLOBALSINDEX) {
|
||||||
|
tname = lj_obj_itypename[~LJ_TTAB];
|
||||||
|
} else {
|
||||||
|
GCfunc *fn = curr_func(L);
|
||||||
|
int idx = LUA_GLOBALSINDEX - narg;
|
||||||
|
if (idx <= fn->c.nupvalues)
|
||||||
|
tname = lj_typename(&fn->c.upvalue[idx-1]);
|
||||||
|
else
|
||||||
|
tname = lj_obj_typename[0];
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
TValue *o = narg < 0 ? L->top + narg : L->base + narg-1;
|
||||||
|
tname = o < L->top ? lj_typename(o) : lj_obj_typename[0];
|
||||||
|
}
|
||||||
|
msg = lj_strfmt_pushf(L, err2msg(LJ_ERR_BADTYPE), xname, tname);
|
||||||
err_argmsg(L, narg, msg);
|
err_argmsg(L, narg, msg);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user