From 9f75120397c98c5d02231f8684cd2b192dfd4085 Mon Sep 17 00:00:00 2001 From: Ryan Lucia Date: Sat, 22 Aug 2020 14:27:49 -0400 Subject: [PATCH] [mono] Don't leak coop handles, fix type in managed ALC struct (#41159) * Don't leak coop handle * Fix type in MonoManagedAssemblyLoadContext --- src/mono/mono/metadata/assembly-load-context.c | 5 +++-- src/mono/mono/metadata/object-internals.h | 2 +- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/src/mono/mono/metadata/assembly-load-context.c b/src/mono/mono/metadata/assembly-load-context.c index 7aa927d21af219..e9334611d084cf 100644 --- a/src/mono/mono/metadata/assembly-load-context.c +++ b/src/mono/mono/metadata/assembly-load-context.c @@ -176,9 +176,10 @@ mono_alc_is_default (MonoAssemblyLoadContext *alc) MonoAssemblyLoadContext * mono_alc_from_gchandle (MonoGCHandle alc_gchandle) { + HANDLE_FUNCTION_ENTER (); MonoManagedAssemblyLoadContextHandle managed_alc = MONO_HANDLE_CAST (MonoManagedAssemblyLoadContext, mono_gchandle_get_target_handle (alc_gchandle)); - MonoAssemblyLoadContext *alc = (MonoAssemblyLoadContext *)MONO_HANDLE_GETVAL (managed_alc, native_assembly_load_context); - return alc; + MonoAssemblyLoadContext *alc = MONO_HANDLE_GETVAL (managed_alc, native_assembly_load_context); + HANDLE_FUNCTION_RETURN_VAL (alc); } MonoGCHandle diff --git a/src/mono/mono/metadata/object-internals.h b/src/mono/mono/metadata/object-internals.h index ff255bbbdc4766..0175b9134d3b2f 100644 --- a/src/mono/mono/metadata/object-internals.h +++ b/src/mono/mono/metadata/object-internals.h @@ -1663,7 +1663,7 @@ typedef struct { MonoEvent *resolving; MonoEvent *unloading; MonoString *name; - gpointer *native_assembly_load_context; + MonoAssemblyLoadContext *native_assembly_load_context; gint64 id; gint32 internal_state; MonoBoolean is_collectible;