diff options
Diffstat (limited to 'src/lj_ccallback.c')
| -rw-r--r-- | src/lj_ccallback.c | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/src/lj_ccallback.c b/src/lj_ccallback.c index 724dea607..2ed84507a 100644 --- a/src/lj_ccallback.c +++ b/src/lj_ccallback.c | |||
| @@ -704,6 +704,10 @@ static void callback_conv_result(CTState *cts, lua_State *L, TValue *o) | |||
| 704 | if (ctr->size <= 4 && | 704 | if (ctr->size <= 4 && |
| 705 | (LJ_ABI_SOFTFP || ctype_isinteger_or_bool(ctr->info))) | 705 | (LJ_ABI_SOFTFP || ctype_isinteger_or_bool(ctr->info))) |
| 706 | *(int64_t *)dp = (int64_t)*(int32_t *)dp; | 706 | *(int64_t *)dp = (int64_t)*(int32_t *)dp; |
| 707 | #elif LJ_TARGET_X64 | ||
| 708 | /* Always zero-extend results to 64 bits. */ | ||
| 709 | if (ctr->size <= 4 && ctype_isinteger_or_bool(ctr->info)) | ||
| 710 | *(uint64_t *)dp = (uint64_t)*(uint32_t *)dp; | ||
| 707 | #endif | 711 | #endif |
| 708 | #if LJ_TARGET_X86 | 712 | #if LJ_TARGET_X86 |
| 709 | if (ctype_isfp(ctr->info)) | 713 | if (ctype_isfp(ctr->info)) |
