[interp] allocate storage for value types in runtime_invoke
authorBernhard Urban <bernhard.urban@xamarin.com>
Fri, 17 Mar 2017 16:02:02 +0000 (17:02 +0100)
committerBernhard Urban <bernhard.urban@xamarin.com>
Sat, 18 Mar 2017 18:31:49 +0000 (19:31 +0100)
mono/mini/interp/interp.c
mono/tests/Makefile.am

index f99e931c895553b41f0ccf1f00aa5c751dd05050..be96452e8e577658999871b4186947c971439dce 100644 (file)
@@ -1284,6 +1284,8 @@ mono_interp_runtime_invoke (MonoMethod *method, void *obj, void **params, MonoOb
                ret = mono_object_unbox (retval);
                if (!sig->ret->data.klass->enumtype)
                        result.data.vt = ret;
+               else
+                       result.data.vt = alloca (mono_class_instance_size (klass));
                break;
        case MONO_TYPE_GENERICINST:
                if (!MONO_TYPE_IS_REFERENCE (sig->ret)) {
@@ -1291,6 +1293,8 @@ mono_interp_runtime_invoke (MonoMethod *method, void *obj, void **params, MonoOb
                        ret = mono_object_unbox (retval);
                        if (!sig->ret->data.klass->enumtype)
                                result.data.vt = ret;
+                       else
+                               result.data.vt = alloca (mono_class_instance_size (klass));
                } else {
                        isobject = 1;
                }
index 9a2ac556118cf3295b49afd9fee9524f62f82953..228bfd4d915b944b077de44c1340164f80c4984e 100644 (file)
@@ -1039,7 +1039,6 @@ INTERP_DISABLED_TESTS = \
        remoting3.exe \
        remoting4.exe \
        remoting5.exe \
-       runtime-invoke.exe \
        runtime-invoke.gen.exe \
        safehandle.2.exe \
        shared-generic-synchronized.2.exe \