From: Bernhard Urban Date: Wed, 17 May 2017 11:40:58 +0000 (+0200) Subject: [interp] generics/vt fix regarding elem size for ldelem.vt X-Git-Url: http://wien.tomnetworks.com/gitweb/?p=mono.git;a=commitdiff_plain;h=77e670ccb386f94cfc7cfca94df2d94d8f28aa7f [interp] generics/vt fix regarding elem size for ldelem.vt --- diff --git a/mono/mini/interp/interp.c b/mono/mini/interp/interp.c index 87d1781d6ab..cd652abc91a 100644 --- a/mono/mini/interp/interp.c +++ b/mono/mini/interp/interp.c @@ -399,9 +399,16 @@ stackval_from_data (MonoType *type, stackval *result, char *data, gboolean pinvo } else mono_value_copy (result->data.vt, data, type->data.klass); return; - case MONO_TYPE_GENERICINST: + case MONO_TYPE_GENERICINST: { + MonoClass *container_class = type->data.generic_class->container_class; + + if (container_class->valuetype && !container_class->enumtype) { + mono_value_copy (result->data.vt, data, mono_class_from_mono_type (type)); + return; + } stackval_from_data (&type->data.generic_class->container_class->byval_arg, result, data, pinvoke); return; + } default: g_warning ("got type 0x%02x", type->type); g_assert_not_reached ();