X-Git-Url: http://wien.tomnetworks.com/gitweb/?a=blobdiff_plain;f=mono%2Fmetadata%2Fimage.c;h=c58c4b6794a056cdcec340a869748af3bb66bfa0;hb=28d9e844c0cf5ff29e9ca3cd2041702b2355d371;hp=c99de7aa04f344b980db02069a46a38a274f5bfc;hpb=62c49f89ad1cc35593a00d909ea57bb41955288b;p=mono.git diff --git a/mono/metadata/image.c b/mono/metadata/image.c index c99de7aa04f..c58c4b6794a 100644 --- a/mono/metadata/image.c +++ b/mono/metadata/image.c @@ -9,6 +9,7 @@ * Copyright 2001-2003 Ximian, Inc (http://www.ximian.com) * Copyright 2004-2009 Novell, Inc (http://www.novell.com) * + * Licensed under the MIT license. See LICENSE file in the project root for full license information. */ #include #include @@ -509,9 +510,19 @@ load_metadata_ptrs (MonoImage *image, MonoCLIImageInfo *iinfo) i = ((MonoImageLoader*)image->loader)->load_tables (image); g_assert (image->heap_guid.data); - g_assert (image->heap_guid.size >= 16); - image->guid = mono_guid_to_string ((guint8*)image->heap_guid.data); + if (!image->metadata_only) { + g_assert (image->heap_guid.size >= 16); + + image->guid = mono_guid_to_string ((guint8*)image->heap_guid.data); + } else { + /* PPDB files have no guid */ + guint8 empty_guid [16]; + + memset (empty_guid, 0, sizeof (empty_guid)); + + image->guid = mono_guid_to_string (empty_guid); + } return i; } @@ -1070,13 +1081,13 @@ do_mono_image_load (MonoImage *image, MonoImageOpenStatus *status, goto done; } - if (image->loader == &pe_loader && !mono_verifier_verify_cli_data (image, &errors)) + if (image->loader == &pe_loader && !image->metadata_only && !mono_verifier_verify_cli_data (image, &errors)) goto invalid_image; if (!mono_image_load_cli_data (image)) goto invalid_image; - if (image->loader == &pe_loader && !mono_verifier_verify_table_data (image, &errors)) + if (image->loader == &pe_loader && !image->metadata_only && !mono_verifier_verify_table_data (image, &errors)) goto invalid_image; mono_image_load_names (image); @@ -1289,6 +1300,7 @@ mono_image_open_from_data_internal (char *data, guint32 data_len, gboolean need_ image->image_info = iinfo; image->ref_only = refonly; image->metadata_only = metadata_only; + image->ref_count = 1; image = do_mono_image_load (image, status, TRUE, TRUE); if (image == NULL)