aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMike Pall <mike>2026-07-11 14:37:49 +0200
committerMike Pall <mike>2026-07-11 14:37:49 +0200
commit859ad934bc3b92125043c3e599492aecd3586992 (patch)
tree033d661e3ab3424ff9f1dff7d7b835a85ec3e23d
parent295d45fb26de56498782c94594f31b97aef744ef (diff)
downloadluajit-859ad934bc3b92125043c3e599492aecd3586992.tar.gz
luajit-859ad934bc3b92125043c3e599492aecd3586992.tar.bz2
luajit-859ad934bc3b92125043c3e599492aecd3586992.zip
x64: Fix callback result handling.
Reported by Matt Gerassimoff.
-rw-r--r--src/lj_ccallback.c4
1 files changed, 4 insertions, 0 deletions
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)
519#if LJ_TARGET_X86 519#if LJ_TARGET_X86
520 if (ctype_isfp(ctr->info)) 520 if (ctype_isfp(ctr->info))
521 cts->cb.gpr[2] = ctr->size == sizeof(float) ? 1 : 2; 521 cts->cb.gpr[2] = ctr->size == sizeof(float) ? 1 : 2;
522#elif LJ_TARGET_X64
523 /* Always zero-extend results to 64 bits. */
524 if (ctr->size <= 4 && ctype_isinteger_or_bool(ctr->info))
525 *(uint64_t *)dp = (uint64_t)*(uint32_t *)dp;
522#endif 526#endif
523 } 527 }
524} 528}