From 47dcb9768779171e168c0fe626bdc58206dbfa43 Mon Sep 17 00:00:00 2001 From: Rodrigo Kumpera Date: Tue, 19 Jan 2010 20:50:56 +0000 Subject: [PATCH] 2010-01-19 Rodrigo Kumpera * icall.c (ves_icall_Remoting_RemotingServices_GetVirtualMethod): This function is generics variance aware. svn path=/trunk/mono/; revision=149838 --- mono/metadata/ChangeLog | 5 +++++ mono/metadata/icall.c | 4 +++- 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/mono/metadata/ChangeLog b/mono/metadata/ChangeLog index a5c7cd53d96..56b9da4fca6 100644 --- a/mono/metadata/ChangeLog +++ b/mono/metadata/ChangeLog @@ -1,3 +1,8 @@ +2010-01-19 Rodrigo Kumpera + + * icall.c (ves_icall_Remoting_RemotingServices_GetVirtualMethod): This + function is generics variance aware. + 2010-01-19 Sebastien Pouliot * security-core-clr.c (mono_security_core_clr_can_access_internals): diff --git a/mono/metadata/icall.c b/mono/metadata/icall.c index f02067119df..12f85e37450 100644 --- a/mono/metadata/icall.c +++ b/mono/metadata/icall.c @@ -6661,7 +6661,9 @@ ves_icall_Remoting_RemotingServices_GetVirtualMethod ( vtable = klass->vtable; if (method->klass->flags & TYPE_ATTRIBUTE_INTERFACE) { - int offs = mono_class_interface_offset (klass, method->klass); + gboolean variance_used = FALSE; + /*MS fails with variant interfaces but it's the right thing to do anyway.*/ + int offs = mono_class_interface_offset_with_variance (klass, method->klass, &variance_used); if (offs >= 0) res = vtable [offs + method->slot]; } else { -- 2.25.1