diff options
Diffstat (limited to 'src/lib_ffi.c')
-rw-r--r-- | src/lib_ffi.c | 5 |
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) | |||
207 | static int ffi_call_meta(lua_State *L, CTypeID id) | 207 | static 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); |