From a146700e405ca0b6e151f5745de942986399de59 Mon Sep 17 00:00:00 2001 From: Bernhard Urban Date: Fri, 17 Mar 2017 17:02:02 +0100 Subject: [PATCH] [interp] box IntPtr on return of runtime_invoke --- mono/mini/interp/interp.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/mono/mini/interp/interp.c b/mono/mini/interp/interp.c index 9177fa3a4bc..b7332b8cc85 100644 --- a/mono/mini/interp/interp.c +++ b/mono/mini/interp/interp.c @@ -1281,10 +1281,14 @@ mono_interp_runtime_invoke (MonoMethod *method, void *obj, void **params, MonoOb break; case MONO_TYPE_VALUETYPE: retval = mono_object_new_checked (context->domain, klass, error); - ret = ((char*)retval) + sizeof (MonoObject); + ret = mono_object_unbox (retval); if (!sig->ret->data.klass->enumtype) result.data.vt = ret; break; + case MONO_TYPE_PTR: + retval = mono_object_new_checked (context->domain, mono_defaults.int_class, error); + ret = mono_object_unbox (retval); + break; default: retval = mono_object_new_checked (context->domain, klass, error); ret = ((char*)retval) + sizeof (MonoObject); @@ -1338,6 +1342,7 @@ handle_enum: } break; case MONO_TYPE_STRING: + case MONO_TYPE_PTR: case MONO_TYPE_CLASS: case MONO_TYPE_ARRAY: case MONO_TYPE_SZARRAY: -- 2.25.1