diff options
-rw-r--r-- | mono/metadata/ChangeLog | 3 | ||||
-rw-r--r-- | mono/metadata/icall.c | 6 |
2 files changed, 9 insertions, 0 deletions
diff --git a/mono/metadata/ChangeLog b/mono/metadata/ChangeLog index f26a34e418c..ddf50ac5ea2 100644 --- a/mono/metadata/ChangeLog +++ b/mono/metadata/ChangeLog @@ -1,5 +1,8 @@ 2004-10-25 Zoltan Varga <vargaz@freemail.hu> + * icall.c (ves_icall_type_is_subtype_of): Fix this for byref types. + (ves_icall_type_is_assignable_from): Ditto. Fixes #68582. + * gc.c (finalize_domain_objects): Call GC_invoke_finalizers () so pending finalizers are not invoked after the appdomain has been unloaded. Fixes #67862. diff --git a/mono/metadata/icall.c b/mono/metadata/icall.c index 7e76bf279d4..0c2064d4b94 100644 --- a/mono/metadata/icall.c +++ b/mono/metadata/icall.c @@ -1153,6 +1153,9 @@ ves_icall_type_is_subtype_of (MonoReflectionType *type, MonoReflectionType *c, M klass = mono_class_from_mono_type (type->type); klassc = mono_class_from_mono_type (c->type); + if (type->type->byref) + return klassc == mono_defaults.object_class; + return mono_class_is_subclass_of (klass, klassc, check_interfaces); } @@ -1172,6 +1175,9 @@ ves_icall_type_is_assignable_from (MonoReflectionType *type, MonoReflectionType klass = mono_class_from_mono_type (type->type); klassc = mono_class_from_mono_type (c->type); + if (type->type->byref && !c->type->byref) + return FALSE; + return mono_class_is_assignable_from (klass, klassc); } |