From: Zoltan Varga Date: Mon, 25 Oct 2004 13:51:10 +0000 (-0000) Subject: 2004-10-25 Zoltan Varga X-Git-Url: http://wien.tomnetworks.com/gitweb/?a=commitdiff_plain;h=cabb02a5afcb9e9fdc2a30d6f3a00b0d80819842;p=mono.git 2004-10-25 Zoltan Varga * icall.c (ves_icall_type_is_subtype_of): Fix this for byref types. (ves_icall_type_is_assignable_from): Ditto. Fixes #68582. svn path=/branches/mono-1-0/mono/; revision=35300 --- 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 + * 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); }