From 859ad934bc3b92125043c3e599492aecd3586992 Mon Sep 17 00:00:00 2001 From: Mike Pall Date: Sat, 11 Jul 2026 14:37:49 +0200 Subject: x64: Fix callback result handling. Reported by Matt Gerassimoff. --- src/lj_ccallback.c | 4 ++++ 1 file changed, 4 insertions(+) (limited to 'src/lj_ccallback.c') diff --git a/src/lj_ccallback.c b/src/lj_ccallback.c index 3ddb7ca5c..2fa8e7ce0 100644 --- a/src/lj_ccallback.c +++ b/src/lj_ccallback.c @@ -519,6 +519,10 @@ static void callback_conv_result(CTState *cts, lua_State *L, TValue *o) #if LJ_TARGET_X86 if (ctype_isfp(ctr->info)) cts->cb.gpr[2] = ctr->size == sizeof(float) ? 1 : 2; +#elif LJ_TARGET_X64 + /* Always zero-extend results to 64 bits. */ + if (ctr->size <= 4 && ctype_isinteger_or_bool(ctr->info)) + *(uint64_t *)dp = (uint64_t)*(uint32_t *)dp; #endif } } -- cgit v1.2.3-55-g6feb