Author: raja
Date: 2008-02-20 04:58:13 -0500 (Wed, 20 Feb 2008)
New Revision: 96229
Modified:
trunk/mono/mono/metadata/ChangeLog
trunk/mono/mono/metadata/reflection.c
Log:
* reflection.c (mono_custom_attrs_from_method): Don't silently
return an empty list for generic method instances.
(mono_custom_attrs_from_param): Likewise.
Modified: trunk/mono/mono/metadata/ChangeLog
===================================================================
--- trunk/mono/mono/metadata/ChangeLog 2008-02-20 09:23:12 UTC (rev 96228)
+++ trunk/mono/mono/metadata/ChangeLog 2008-02-20 09:58:13 UTC (rev 96229)
@@ -1,3 +1,9 @@
+2008-02-20 Raja R Harinath <[EMAIL PROTECTED]>
+
+ * reflection.c (mono_custom_attrs_from_method): Don't silently
+ return an empty list for generic method instances.
+ (mono_custom_attrs_from_param): Likewise.
+
2008-02-20 Rodrigo Kumpera <[EMAIL PROTECTED]>
Raja R Harinath <[EMAIL PROTECTED]>
Modified: trunk/mono/mono/metadata/reflection.c
===================================================================
--- trunk/mono/mono/metadata/reflection.c 2008-02-20 09:23:12 UTC (rev
96228)
+++ trunk/mono/mono/metadata/reflection.c 2008-02-20 09:58:13 UTC (rev
96229)
@@ -7399,6 +7399,15 @@
{
MonoCustomAttrInfo *cinfo;
guint32 idx;
+
+ /*
+ * An instantiated method has the same cattrs as the generic method
definition.
+ *
+ * LAMESPEC: The .NET SRE throws an exception for instantiations of
generic method builders
+ * Note that this stanza is not necessary for non-SRE types,
but it's a micro-optimization
+ */
+ if (method->is_inflated)
+ method = ((MonoMethodInflated *) method)->declaring;
if (dynamic_custom_attrs && (cinfo = lookup_custom_attr (method)))
return cinfo;
@@ -7504,6 +7513,15 @@
MonoImage *image;
MonoReflectionMethodAux *aux;
+ /*
+ * An instantiated method has the same cattrs as the generic method
definition.
+ *
+ * LAMESPEC: The .NET SRE throws an exception for instantiations of
generic method builders
+ * Note that this stanza is not necessary for non-SRE types,
but it's a micro-optimization
+ */
+ if (method->is_inflated)
+ method = ((MonoMethodInflated *) method)->declaring;
+
if (method->klass->image->dynamic) {
MonoCustomAttrInfo *res, *ainfo;
int size;
_______________________________________________
Mono-patches maillist - [email protected]
http://lists.ximian.com/mailman/listinfo/mono-patches