Merge pull request #1780 from alexrp/master
[mono.git] / mono / metadata / object.c
index 21df3486224604646fd7058bbc0970766b226aec..b56dd2c82654d5527158b61fb5d1d8fb33086b82 100644 (file)
@@ -2197,10 +2197,6 @@ mono_class_create_runtime_vtable (MonoDomain *domain, MonoClass *class, gboolean
        mono_domain_unlock (domain);
        mono_loader_unlock ();
 
-       /* Initialization is now complete, we can throw if the InheritanceDemand aren't satisfied */
-       if (mono_security_enabled () && (class->exception_type == MONO_EXCEPTION_SECURITY_INHERITANCEDEMAND) && raise_on_error)
-               mono_raise_exception (mono_class_get_exception_for_failure (class));
-
        /* make sure the parent is initialized */
        /*FIXME shouldn't this fail the current type?*/
        if (class->parent)
@@ -6279,6 +6275,9 @@ mono_print_unhandled_exception (MonoObject *exc)
        if (exc == (MonoObject*)mono_object_domain (exc)->out_of_memory_ex) {
                message = g_strdup ("OutOfMemoryException");
                free_message = TRUE;
+       } else if (exc == (MonoObject*)mono_object_domain (exc)->stack_overflow_ex) {
+               message = g_strdup ("StackOverflowException"); //if we OVF, we can't expect to have stack space to JIT Exception::ToString.
+               free_message = TRUE;
        } else {
                
                if (((MonoException*)exc)->native_trace_ips) {
@@ -6339,6 +6338,8 @@ mono_delegate_ctor_with_method (MonoObject *this, MonoObject *target, gpointer a
        g_assert (this);
        g_assert (addr);
 
+       g_assert (mono_class_has_parent (mono_object_class (this), mono_defaults.multicastdelegate_class));
+
        if (method)
                delegate->method = method;