Fix check for SafeHandle types
authorFilip Navara <navara@emclient.com>
Thu, 19 Sep 2019 16:21:21 +0000 (18:21 +0200)
committerMarek Safar <marek.safar@gmail.com>
Fri, 20 Sep 2019 09:44:25 +0000 (11:44 +0200)
Commit migrated from https://github.com/mono/mono/commit/338170ecceaf6d8e69ad1812d416dfaf728096f3

src/mono/mono/metadata/metadata.c

index d92ea89..f064639 100644 (file)
@@ -6754,7 +6754,8 @@ handle_enum:
                        *conv = MONO_MARSHAL_CONV_DEL_FTN;
                        return MONO_NATIVE_FUNC;
                }
-               if (mono_class_try_get_safehandle_class () && type->data.klass == mono_class_try_get_safehandle_class ()){
+               if (mono_class_try_get_safehandle_class () && type->data.klass != NULL &&
+                       mono_class_is_subclass_of_internal (type->data.klass,  mono_class_try_get_safehandle_class (), FALSE)){
                        *conv = MONO_MARSHAL_CONV_SAFEHANDLE;
                        return MONO_NATIVE_INT;
                }