[mono] Don't leak coop handles, fix type in managed ALC struct (#41159)
authorRyan Lucia <rylucia@microsoft.com>
Sat, 22 Aug 2020 18:27:49 +0000 (14:27 -0400)
committerGitHub <noreply@github.com>
Sat, 22 Aug 2020 18:27:49 +0000 (14:27 -0400)
* Don't leak coop handle

* Fix type in MonoManagedAssemblyLoadContext

src/mono/mono/metadata/assembly-load-context.c
src/mono/mono/metadata/object-internals.h

index 7aa927d..e933461 100644 (file)
@@ -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
index ff255bb..0175b91 100644 (file)
@@ -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;