summaryrefslogtreecommitdiff
path: root/src/lib_ffi.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/lib_ffi.c')
-rw-r--r--src/lib_ffi.c5
1 files changed, 4 insertions, 1 deletions
diff --git a/src/lib_ffi.c b/src/lib_ffi.c
index 82942e44..af500118 100644
--- a/src/lib_ffi.c
+++ b/src/lib_ffi.c
@@ -207,7 +207,10 @@ LJLIB_CF(ffi_meta___concat) LJLIB_REC(cdata_arith MM_concat)
207static int ffi_call_meta(lua_State *L, CTypeID id) 207static int ffi_call_meta(lua_State *L, CTypeID id)
208{ 208{
209 CTState *cts = ctype_cts(L); 209 CTState *cts = ctype_cts(L);
210 cTValue *tv = lj_ctype_meta(cts, id, MM_call); 210 CType *ct = ctype_raw(cts, id);
211 cTValue *tv;
212 if (ctype_isptr(ct->info)) id = ctype_cid(ct->info);
213 tv = lj_ctype_meta(cts, id, MM_call);
211 if (!tv) 214 if (!tv)
212 lj_err_callerv(L, LJ_ERR_FFI_BADCALL, strdata(lj_ctype_repr(L, id, NULL))); 215 lj_err_callerv(L, LJ_ERR_FFI_BADCALL, strdata(lj_ctype_repr(L, id, NULL)));
213 return lj_meta_tailcall(L, tv); 216 return lj_meta_tailcall(L, tv);