From 3eb4c15a54751cbe9e78cbae792273687c02c804 Mon Sep 17 00:00:00 2001 From: monojenkins Date: Fri, 5 Jun 2020 14:19:46 -0400 Subject: [PATCH] [aot] Fix the binary search in the llvmonly unbox tramp table. (#37480) Fixes https://github.com/mono/mono/issues/19879. Co-authored-by: vargaz --- src/mono/mono/mini/aot-runtime.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/mono/mono/mini/aot-runtime.c b/src/mono/mono/mini/aot-runtime.c index 5e15661..df546e0 100644 --- a/src/mono/mono/mini/aot-runtime.c +++ b/src/mono/mono/mini/aot-runtime.c @@ -6010,10 +6010,10 @@ i32_idx_comparer (const void *key, const void *member) } static int -i16_idx_comparer (const void *key, const void *member) +ui16_idx_comparer (const void *key, const void *member) { int idx1 = GPOINTER_TO_INT (key); - int idx2 = *(gint16*)member; + int idx2 = *(guint16*)member; return idx1 - idx2; } @@ -6088,7 +6088,7 @@ mono_aot_get_unbox_trampoline (MonoMethod *method, gpointer addr) g_assert (*(int*)ptr == method_index); unbox_tramp_idx = (guint32*)ptr - (guint32*)amodule->info.llvm_unbox_tramp_indexes; } else { - void *ptr = mono_binary_search (GINT_TO_POINTER (method_index), amodule->info.llvm_unbox_tramp_indexes, amodule->info.llvm_unbox_tramp_num, amodule->info.llvm_unbox_tramp_elemsize, i16_idx_comparer); + void *ptr = mono_binary_search (GINT_TO_POINTER (method_index), amodule->info.llvm_unbox_tramp_indexes, amodule->info.llvm_unbox_tramp_num, amodule->info.llvm_unbox_tramp_elemsize, ui16_idx_comparer); g_assert (ptr); g_assert (*(gint16*)ptr == method_index); unbox_tramp_idx = (guint16*)ptr - (guint16*)amodule->info.llvm_unbox_tramp_indexes; -- 2.7.4