2004-10-25 Zoltan Varga <vargaz@freemail.hu>
authorZoltan Varga <vargaz@gmail.com>
Mon, 25 Oct 2004 13:51:10 +0000 (13:51 -0000)
committerZoltan Varga <vargaz@gmail.com>
Mon, 25 Oct 2004 13:51:10 +0000 (13:51 -0000)
* 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

mono/metadata/ChangeLog
mono/metadata/icall.c

index f26a34e418c532608529ceec43c8b2999e0254a7..ddf50ac5ea233ce96ed2f2854219dca03798e4c6 100644 (file)
@@ -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.
index 7e76bf279d4e6c2d0bb1b30e0aa728ef2eff92d5..0c2064d4b94e21bd2703ee7713618a809c9cb1bc 100644 (file)
@@ -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);
 }