X-Git-Url: http://wien.tomnetworks.com/gitweb/?a=blobdiff_plain;f=mono%2Fmetadata%2Fmonodiet.c;h=1ad1f538819b48207c633503e97fda3414b17d49;hb=282132ce157f6e45275e9a5f9db905a3cbe51d62;hp=931ab9d9afeecf9576d16c3f840fa3cf633bc9d0;hpb=a3ea7ceb4d4f5e2cb8ea421313e8939640fb898c;p=mono.git diff --git a/mono/metadata/monodiet.c b/mono/metadata/monodiet.c index 931ab9d9afe..1ad1f538819 100644 --- a/mono/metadata/monodiet.c +++ b/mono/metadata/monodiet.c @@ -128,7 +128,7 @@ add_types_from_method (MonoMethod *method) { locals = mono_method_header_get_locals (header, &n, NULL); for (i = 0; i < n; ++i) { - klass = mono_class_from_mono_type (locals); + klass = mono_class_from_mono_type (locals [i]); add_type (klass); } for (exc_iter = NULL; mono_method_header_get_clauses (header, method, &exc_iter, &clause);) { @@ -218,6 +218,7 @@ handle_cattrs (MonoCustomAttrInfo* cattrs) for (i = 0; i < cattrs->num_attrs; ++i) { add_types_from_method (cattrs->attrs [i].ctor); } + mono_custom_attrs_free (cattrs); } static void @@ -336,9 +337,8 @@ check_vmethods (MonoClass *klass, MonoMethod *method) if (!vtable) return; if (method->klass->flags & TYPE_ATTRIBUTE_INTERFACE) { - if (method->klass->interface_id <= klass->max_interface_id && - (klass->interface_offsets [method->klass->interface_id] >= 0)) { - int iface_offset = klass->interface_offsets [method->klass->interface_id]; + if (MONO_CLASS_IMPLEMENTS_INTERFACE (klass, method->klass->interface_id)) { + int iface_offset = mono_class_interface_offset (klass, method->klass); g_assert (method->slot != -1); if (vtable [iface_offset + method->slot]) add_types_from_method (vtable [iface_offset + method->slot]);