- sig = find_cached_memberref_sig (image, sig_idx);
- if (!sig) {
- if (!mono_verifier_verify_memberref_signature (image, sig_idx, NULL)) {
+ mono_loader_set_error_bad_image (g_strdup_printf ("Bad method signature class token 0x%08x field name %s token 0x%08x on image %s", class, fname, token, image->name));
+ return NULL;
+ }
+
+ ptr = mono_metadata_blob_heap (image, sig_idx);
+ mono_metadata_decode_blob_size (ptr, &ptr);
+ sig = mono_metadata_parse_method_signature (image, 0, ptr, NULL);
+ if (!sig)
+ return NULL;
+ sig = cache_memberref_sig (image, sig_idx, sig);
+ }
+ /* FIXME: we probably should verify signature compat in the dynamic case too*/
+ if (!mono_verifier_is_sig_compatible (image, method, sig)) {