* icall.c (ves_icall_Type_GetMethodsByName): Don't pin virtual methods if they are newslot.
A private virtual newslot method is used to implement an interface method without exposing
it to users. When querying for public instance methods, such method would hide a public one
on a parent type.
Fixes #564379.
svn path=/trunk/mono/; revision=148694
+2009-12-17 Rodrigo Kumpera <rkumpera@novell.com>
+
+ * icall.c (ves_icall_Type_GetMethodsByName): Don't pin virtual methods if they are newslot.
+ A private virtual newslot method is used to implement an interface method without exposing
+ it to users. When querying for public instance methods, such method would hide a public one
+ on a parent type.
+
+ Fixes #564379.
+
2009-12-17 Zoltan Varga <vargaz@gmail.com>
* reflection.c (resolve_object): Fix the encoding of unmanaged calling
g_assert (method->slot < nslots);
if (method_slots [method->slot >> 5] & (1 << (method->slot & 0x1f)))
continue;
- method_slots [method->slot >> 5] |= 1 << (method->slot & 0x1f);
+ if (!(method->flags & METHOD_ATTRIBUTE_NEW_SLOT))
+ method_slots [method->slot >> 5] |= 1 << (method->slot & 0x1f);
}
if (method->name [0] == '.' && (strcmp (method->name, ".ctor") == 0 || strcmp (method->name, ".cctor") == 0))