in mono/mono/mini:
[mono.git] / mono / metadata / monodiet.c
index 931ab9d9afeecf9576d16c3f840fa3cf633bc9d0..35f873d58bdcb39b8c1d3456371c0f8c35ec7b2e 100644 (file)
@@ -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);) {
@@ -336,9 +336,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]);