diff options
author | jfrijters <jfrijters> | 2011-12-08 15:10:11 +0400 |
---|---|---|
committer | jfrijters <jfrijters> | 2011-12-08 15:10:11 +0400 |
commit | 96080f9b8227f74d3f3618f9f9a3adbd976c3a33 (patch) | |
tree | a7dc95e8ce1079325795d287faefb8f208e646ce | |
parent | 6110e41d565f2de7d18e3d590fbc18d9802a4f2a (diff) |
Fixed unloadable corner case (that only only be generated by playing weird class loader tricks).
-rw-r--r-- | runtime/DynamicTypeWrapper.cs | 8 |
1 files changed, 4 insertions, 4 deletions
diff --git a/runtime/DynamicTypeWrapper.cs b/runtime/DynamicTypeWrapper.cs index 4c97be02..f38d20f3 100644 --- a/runtime/DynamicTypeWrapper.cs +++ b/runtime/DynamicTypeWrapper.cs @@ -1159,9 +1159,9 @@ namespace IKVM.Internal bool unloadableOverrideStub = false; if (mw.ReturnType != baseMethod.ReturnType) { - if (baseMethod.ReturnType.IsUnloadable || JVM.FinishingForDebugSave) + if (mw.ReturnType.IsUnloadable || baseMethod.ReturnType.IsUnloadable || JVM.FinishingForDebugSave) { - if (!mw.ReturnType.IsUnloadable || (!baseMethod.ReturnType.IsUnloadable && JVM.FinishingForDebugSave)) + if (mw.ReturnType.IsUnloadable != baseMethod.ReturnType.IsUnloadable || JVM.FinishingForDebugSave) { unloadableOverrideStub = true; } @@ -1180,9 +1180,9 @@ namespace IKVM.Internal { if (here[i] != there[i]) { - if (there[i].IsUnloadable || JVM.FinishingForDebugSave) + if (here[i].IsUnloadable || there[i].IsUnloadable || JVM.FinishingForDebugSave) { - if (!here[i].IsUnloadable || (!there[i].IsUnloadable && JVM.FinishingForDebugSave)) + if (here[i].IsUnloadable != there[i].IsUnloadable || JVM.FinishingForDebugSave) { unloadableOverrideStub = true; } |