diff options
author | Zoltan Varga <vargaz@gmail.com> | 2004-10-25 17:51:10 +0400 |
---|---|---|
committer | Zoltan Varga <vargaz@gmail.com> | 2004-10-25 17:51:10 +0400 |
commit | cabb02a5afcb9e9fdc2a30d6f3a00b0d80819842 (patch) | |
tree | 51db5c91d531fb533e749aa276105b0f95b4af79 | |
parent | 470ef6e7b0c431ac9328d4f999c5ab2d957aad8e (diff) |
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.
svn path=/branches/mono-1-0/mono/; revision=35300
-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); } |