2010-05-07 Rodrigo Kumpera <rkumpera@novell.com>
authorRodrigo Kumpera <kumpera@gmail.com>
Fri, 7 May 2010 22:20:13 +0000 (22:20 -0000)
committerRodrigo Kumpera <kumpera@gmail.com>
Fri, 7 May 2010 22:20:13 +0000 (22:20 -0000)
* appdomain.c (mono_domain_has_type_resolve): Check for
NULL domain objects to make pedump happy.

* object.c (mono_field_get_value): Assert on NULL object.
It's the caller resposibility to check for this.

* object.c (mono_field_get_value_object): Ditto.

Fixes #601384.

svn path=/trunk/mono/; revision=156924

mono/metadata/ChangeLog
mono/metadata/appdomain.c
mono/metadata/object.c

index 89a31c01cebf96bf27beecc26535c9cf8277c25d..9da898992f0eda55ff3085b355122c97325c0660 100644 (file)
@@ -1,3 +1,15 @@
+2010-05-07 Rodrigo Kumpera  <rkumpera@novell.com>
+
+       * appdomain.c (mono_domain_has_type_resolve): Check for
+       NULL domain objects to make pedump happy.
+
+       * object.c (mono_field_get_value): Assert on NULL object.
+       It's the caller resposibility to check for this.
+
+       * object.c (mono_field_get_value_object): Ditto.
+
+       Fixes #601384.
+
 2010-05-07 Rodrigo Kumpera  <rkumpera@novell.com>
 
        * icall.c (ves_icall_type_is_subtype_of): Non iface subtype
index 13a3d5f54d9560fd569e7ff2ca63b74224d73837..79cfcaa634a4724887fd418e7645e777027773fe 100644 (file)
@@ -539,6 +539,10 @@ mono_domain_has_type_resolve (MonoDomain *domain)
                g_assert (field);
        }
 
+       /*pedump doesn't create an appdomin, so the domain object doesn't exist.*/
+       if (!domain->domain)
+               return FALSE;
+
        mono_field_get_value ((MonoObject*)(domain->domain), field, &o);
        return o != NULL;
 }
index 8e546c29becb9094ac1cbae37b703968fe2fdfd1..f5eac2cb2c931fb3216954443562875b85189af0 100644 (file)
@@ -2958,6 +2958,8 @@ mono_field_get_value (MonoObject *obj, MonoClassField *field, void *value)
 {
        void *src;
 
+       g_assert (obj);
+
        g_return_if_fail (!(field->type->attrs & FIELD_ATTRIBUTE_STATIC));
 
        src = (char*)obj + field->offset;
@@ -3037,6 +3039,8 @@ mono_field_get_value_object (MonoDomain *domain, MonoClassField *field, MonoObje
                        if (!vtable->initialized)
                                mono_runtime_class_init (vtable);
                }
+       } else {
+               g_assert (obj);
        }
        
        if (is_ref) {