diff options
author | Miguel de Icaza <miguel@gnome.org> | 2007-02-12 23:49:57 +0300 |
---|---|---|
committer | Miguel de Icaza <miguel@gnome.org> | 2007-02-12 23:49:57 +0300 |
commit | d0a1cc2034e7a4dee706edfccecf777a4584112e (patch) | |
tree | b30a50a8a25f0a207869353db5aa83dec2b1065a | |
parent | 375d9925c58bbaf05467b1eb537b6c4577c9229d (diff) |
Backport of trunk/72687
svn path=/branches/mono-1-2-3/mono/; revision=72691
-rw-r--r-- | mono/metadata/ChangeLog | 3 | ||||
-rw-r--r-- | mono/metadata/loader.c | 13 |
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) { |