FFI: Handle __pairs/__ipairs metamethods for cdata objects.
This commit is contained in:
@@ -278,12 +278,16 @@ LJLIB_ASM(next)
|
||||
return FFH_UNREACHABLE;
|
||||
}
|
||||
|
||||
#ifdef LUAJIT_ENABLE_LUA52COMPAT
|
||||
#if defined(LUAJIT_ENABLE_LUA52COMPAT) || LJ_HASFFI
|
||||
static int ffh_pairs(lua_State *L, MMS mm)
|
||||
{
|
||||
TValue *o = lj_lib_checkany(L, 1);
|
||||
cTValue *mo = lj_meta_lookup(L, o, mm);
|
||||
if (!tvisnil(mo)) {
|
||||
if (
|
||||
#if !defined(LUAJIT_ENABLE_LUA52COMPAT)
|
||||
tviscdata(o) &&
|
||||
#endif
|
||||
!tvisnil(mo)) {
|
||||
L->top = o+1; /* Only keep one argument. */
|
||||
copyTV(L, L->base-1, mo); /* Replace callable. */
|
||||
return FFH_TAILCALL;
|
||||
|
||||
Reference in New Issue
Block a user