diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/lj_crecord.c | 10 |
1 files changed, 8 insertions, 2 deletions
diff --git a/src/lj_crecord.c b/src/lj_crecord.c index 0120b3eb..5e058a6f 100644 --- a/src/lj_crecord.c +++ b/src/lj_crecord.c | |||
@@ -707,8 +707,14 @@ static int crec_call(jit_State *J, RecordFFData *rd, GCcdata *cd) | |||
707 | CType *ctr = ctype_rawchild(cts, ct); | 707 | CType *ctr = ctype_rawchild(cts, ct); |
708 | IRType t = crec_ct2irt(ctr); | 708 | IRType t = crec_ct2irt(ctr); |
709 | TRef tr; | 709 | TRef tr; |
710 | if (ctype_isenum(ctr->info)) ctr = ctype_child(cts, ctr); | 710 | if (ctype_isvoid(ctr->info)) { |
711 | if (!(ctype_isnum(ctr->info) || ctype_isptr(ctr->info)) || | 711 | t = IRT_NIL; |
712 | rd->nres = 0; | ||
713 | } else if (ctype_isenum(ctr->info)) { | ||
714 | ctr = ctype_child(cts, ctr); | ||
715 | } | ||
716 | if (!(ctype_isnum(ctr->info) || ctype_isptr(ctr->info) || | ||
717 | ctype_isvoid(ctr->info)) || | ||
712 | ctype_isbool(ctr->info) || (ct->info & CTF_VARARG) || | 718 | ctype_isbool(ctr->info) || (ct->info & CTF_VARARG) || |
713 | #if LJ_TARGET_X86 | 719 | #if LJ_TARGET_X86 |
714 | ctype_cconv(ct->info) != CTCC_CDECL || | 720 | ctype_cconv(ct->info) != CTCC_CDECL || |