When registering helpers via FFI for TCI, the inner loop that iterates parameters of the helper reuses (and thus pollutes) the same variable used by the outer loop that iterates all helpers, thus made some helpers unregistered.
Fix this logic error by using a dedicated temporary variable for the inner loop. Signed-off-by: Icenowy Zheng <u...@icenowy.me> --- tcg/tcg.c | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/tcg/tcg.c b/tcg/tcg.c index 612a12f58f..adfaf61a32 100644 --- a/tcg/tcg.c +++ b/tcg/tcg.c @@ -619,6 +619,7 @@ static void tcg_context_init(unsigned max_cpus) gpointer hash = (gpointer)(uintptr_t)typemask; ffi_status status; int nargs; + int j; if (g_hash_table_lookup(ffi_table, hash)) { continue; @@ -634,9 +635,9 @@ static void tcg_context_init(unsigned max_cpus) if (nargs != 0) { ca->cif.arg_types = ca->args; - for (i = 0; i < nargs; ++i) { - int typecode = extract32(typemask, (i + 1) * 3, 3); - ca->args[i] = typecode_to_ffi[typecode]; + for (j = 0; j < nargs; ++j) { + int typecode = extract32(typemask, (j + 1) * 3, 3); + ca->args[j] = typecode_to_ffi[typecode]; } } -- 2.37.1