Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/mono/mono.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMiguel de Icaza <miguel@gnome.org>2007-02-12 23:49:57 +0300
committerMiguel de Icaza <miguel@gnome.org>2007-02-12 23:49:57 +0300
commitd0a1cc2034e7a4dee706edfccecf777a4584112e (patch)
treeb30a50a8a25f0a207869353db5aa83dec2b1065a
parent375d9925c58bbaf05467b1eb537b6c4577c9229d (diff)
Backport of trunk/72687
svn path=/branches/mono-1-2-3/mono/; revision=72691
-rw-r--r--mono/metadata/ChangeLog3
-rw-r--r--mono/metadata/loader.c13
2 files changed, 16 insertions, 0 deletions
diff --git a/mono/metadata/ChangeLog b/mono/metadata/ChangeLog
index a26643e5ff6..bda10e35eea 100644
--- a/mono/metadata/ChangeLog
+++ b/mono/metadata/ChangeLog
@@ -1,3 +1,6 @@
+Mon Feb 12 21:10:07 CET 2007 Paolo Molaro <lupus@ximian.com>
+
+ * loader.c: implemented typedef parent in field memberref.
Mon Jan 29 11:30:46 CET 2007 Paolo Molaro <lupus@ximian.com>
diff --git a/mono/metadata/loader.c b/mono/metadata/loader.c
index 4503f55834d..cb48950974d 100644
--- a/mono/metadata/loader.c
+++ b/mono/metadata/loader.c
@@ -329,6 +329,19 @@ field_from_memberref (MonoImage *image, guint32 token, MonoClass **retklass,
/* we may want to check the signature here... */
switch (class) {
+ case MONO_MEMBERREF_PARENT_TYPEDEF:
+ klass = mono_class_get (image, MONO_TOKEN_TYPE_DEF | nindex);
+ if (!klass) {
+ char *name = mono_class_name_from_token (image, MONO_TOKEN_TYPE_REF | nindex);
+ g_warning ("Missing field %s in class %s (typeref index %d)", fname, name, nindex);
+ g_free (name);
+ return NULL;
+ }
+ mono_class_init (klass);
+ if (retklass)
+ *retklass = klass;
+ field = mono_class_get_field_from_name (klass, fname);
+ break;
case MONO_MEMBERREF_PARENT_TYPEREF:
klass = mono_class_from_typeref (image, MONO_TOKEN_TYPE_REF | nindex);
if (!klass) {