Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/mono/mono.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorZoltan Varga <vargaz@gmail.com>2004-10-25 17:51:10 +0400
committerZoltan Varga <vargaz@gmail.com>2004-10-25 17:51:10 +0400
commitcabb02a5afcb9e9fdc2a30d6f3a00b0d80819842 (patch)
tree51db5c91d531fb533e749aa276105b0f95b4af79
parent470ef6e7b0c431ac9328d4f999c5ab2d957aad8e (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/ChangeLog3
-rw-r--r--mono/metadata/icall.c6
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);
}