2007-05-01 Zoltan Varga <vargaz@gmail.com>
authorZoltan Varga <vargaz@gmail.com>
Tue, 1 May 2007 14:27:28 +0000 (14:27 -0000)
committerZoltan Varga <vargaz@gmail.com>
Tue, 1 May 2007 14:27:28 +0000 (14:27 -0000)
* icall.c (ves_icall_InternalInvoke): Allow calling ctors of abstract classes.
Fixes #81501.

svn path=/trunk/mono/; revision=76526

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

index 5a9823a0b905d3daded6e7de39f54c0e92fad531..eb4dd31521cfd0d91ac25daf20fa6ea602fa2246 100644 (file)
@@ -1,3 +1,8 @@
+2007-05-01  Zoltan Varga  <vargaz@gmail.com>
+
+       * icall.c (ves_icall_InternalInvoke): Allow calling ctors of abstract classes. 
+       Fixes #81501.
+
 2007-04-30  Zoltan Varga  <vargaz@gmail.com>
 
        * metadata.c (mono_metadata_parse_type_full): Avoid an invalid free since the type
index dd3ada567236c752a92a9e0a9512b4b5820cb38b..a2bdfcef0dd143336fbfa0a3bc109a5f898ad3c2 100644 (file)
@@ -2678,7 +2678,7 @@ ves_icall_InternalInvoke (MonoReflectionMethod *method, MonoObject *this, MonoAr
        if (pcount != mono_method_signature (m)->param_count)
                mono_raise_exception (mono_exception_from_name (mono_defaults.corlib, "System.Reflection", "TargetParameterCountException"));
 
-       if ((m->klass->flags & TYPE_ATTRIBUTE_ABSTRACT) && !strcmp (m->name, ".ctor"))
+       if ((m->klass->flags & TYPE_ATTRIBUTE_ABSTRACT) && !strcmp (m->name, ".ctor") && !this)
                mono_raise_exception (mono_exception_from_name_msg (mono_defaults.corlib, "System", "MethodAccessException", "Cannot invoke constructor of an abstract class."));
 
        if (m->klass->image->assembly->ref_only)