+2010-01-27 Zoltan Varga <vargaz@gmail.com>
+
+ * object.c (mono_field_get_value_object): Handle nullable types correctly.
+ Fixes #572874.
+
2010-01-25 Zoltan Varga <vargaz@gmail.com>
* icall.c (ves_icall_System_Array_SetValueImpl): Handle nullable types correctly.
return vt->data;
}
+static guint8*
+mono_field_get_addr (MonoObject *obj, MonoVTable *vt, MonoClassField *field)
+{
+ guint8 *src;
+
+ if (field->type->attrs & FIELD_ATTRIBUTE_STATIC) {
+ if (field->offset == -1) {
+ /* Special static */
+ gpointer addr = g_hash_table_lookup (vt->domain->special_static_fields, field);
+ src = mono_get_special_static_data (GPOINTER_TO_UINT (addr));
+ } else {
+ src = (guint8*)vt->data + field->offset;
+ }
+ } else {
+ src = (guint8*)obj + field->offset;
+ }
+
+ return src;
+}
+
/**
* mono_field_get_value:
* @obj: Object instance
/* boxed value type */
klass = mono_class_from_mono_type (field->type);
+
+ if (mono_class_is_nullable (klass))
+ return mono_nullable_box (mono_field_get_addr (obj, vtable, field), klass);
+
o = mono_object_new (domain, klass);
v = ((gchar *) o) + sizeof (MonoObject);
if (is_static) {