diff options
author | Zoltan Varga <vargaz@gmail.com> | 2015-05-21 16:58:52 +0300 |
---|---|---|
committer | Sebastien Pouliot <sebastien@xamarin.com> | 2015-07-29 21:21:32 +0300 |
commit | d6946b42e4062ca521d45ecd26baebbaf19c64b6 (patch) | |
tree | 073132c37f34244f7e2bb01f701dd34ca3f07213 | |
parent | e4f44c127ce6ca02c6ec70012f7218c5b3c816e7 (diff) |
[runtime] Handle generic methods in mono_method_get_vtable_slot (). Fixes #30276.mono-4.0.3.20
-rw-r--r-- | mono/metadata/class.c | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/mono/metadata/class.c b/mono/metadata/class.c index 1296ed12123..f1f2e2156d9 100644 --- a/mono/metadata/class.c +++ b/mono/metadata/class.c @@ -4821,6 +4821,11 @@ mono_method_get_vtable_slot (MonoMethod *method) MonoClass *gklass; int i; + if (!method->klass->generic_class) { + g_assert (method->is_inflated); + return mono_method_get_vtable_slot (((MonoMethodInflated*)method)->declaring); + } + /* This can happen for abstract methods of generic instances due to the shortcut code in mono_class_setup_vtable_general (). */ g_assert (method->klass->generic_class); gklass = method->klass->generic_class->container_class; |