Fri Mar 29 18:09:08 CET 2002 Paolo Molaro <lupus@ximian.com>
[mono.git] / mono / metadata / object.c
index 59f272c1e00fd563a904401b76ea0e08543da3e1..365f1a2170003c372584f2a6bc512772ff5613e6 100644 (file)
@@ -193,7 +193,11 @@ mono_array_new_full (MonoDomain *domain, MonoClass *array_class,
 
        byte_len = mono_array_element_size (array_class);
 
+#if HAVE_BOEHM_GC
+       bounds = GC_debug_malloc (sizeof (MonoArrayBounds) * array_class->rank, "bounds", 0);
+#else
        bounds = g_malloc0 (sizeof (MonoArrayBounds) * array_class->rank);
+#endif
        for (i = 0; i < array_class->rank; ++i) {
                bounds [i].length = lengths [i];
                byte_len *= lengths [i];
@@ -376,6 +380,13 @@ mono_object_isinst (MonoObject *obj, MonoClass *klass)
                    vt->interface_offsets [klass->interface_id])
                        return obj;
        } else {
+               if (oklass == mono_defaults.transparent_proxy_class) {
+                       /* fixme: add check for IRemotingTypeInfo */
+                       MonoRealProxy *rp = ((MonoTransparentProxy *)obj)->rp;
+                       MonoType *type;
+                       type = ((MonoReflectionType *)rp->class_to_proxy)->type;
+                       oklass = mono_class_from_mono_type (type);
+               }
                if (oklass->rank && oklass->rank == klass->rank) {
                        if ((oklass->element_class->baseval - klass->element_class->baseval) <= 
                            klass->element_class->diffval)
@@ -499,7 +510,7 @@ mono_string_to_utf8 (MonoString *s)
        return as;
 }
 
-char *
+gunichar2 *
 mono_string_to_utf16 (MonoString *s)
 {
        char *as;
@@ -511,12 +522,12 @@ mono_string_to_utf16 (MonoString *s)
        as [(s->length * 2) + 1] = '\0';
 
        if (!s->length || !s->c_str) {
-               return (as);
+               return (gunichar2 *)(as);
        }
        
        memcpy (as, mono_string_chars(s), s->length * 2);
        
-       return (as);
+       return (gunichar2 *)(as);
 }
 
 static void