summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPeter Alfredsen <loki_val@gentoo.org>2009-01-25 13:23:40 +0000
committerPeter Alfredsen <loki_val@gentoo.org>2009-01-25 13:23:40 +0000
commit5589391bdd240a3e9b0bb6871b9e56e2c0c0a844 (patch)
tree650be701993dab4bf3aa86775a56c82a66286e3b /dev-lang/mono/files
parentRemove warning about hardened from latest open-vm-tools. Closes bug 200376. (diff)
downloadgentoo-2-5589391bdd240a3e9b0bb6871b9e56e2c0c0a844.tar.gz
gentoo-2-5589391bdd240a3e9b0bb6871b9e56e2c0c0a844.tar.bz2
gentoo-2-5589391bdd240a3e9b0bb6871b9e56e2c0c0a844.zip
Add fix for bug 256153, bless crash upstream bug 469213
(Portage version: 2.2_rc23/cvs/Linux x86_64)
Diffstat (limited to 'dev-lang/mono/files')
-rw-r--r--dev-lang/mono/files/mono-2.2-r123987-bless-crash.patch31
1 files changed, 31 insertions, 0 deletions
diff --git a/dev-lang/mono/files/mono-2.2-r123987-bless-crash.patch b/dev-lang/mono/files/mono-2.2-r123987-bless-crash.patch
new file mode 100644
index 000000000000..1be03542a375
--- /dev/null
+++ b/dev-lang/mono/files/mono-2.2-r123987-bless-crash.patch
@@ -0,0 +1,31 @@
+# http://gna.org/bugs/?12900
+# https://bugzilla.novell.com/show_bug.cgi?id=469213
+# http://bugs.gentoo.org/show_bug.cgi?id=256153
+
+Index: mono/mono/mini/method-to-ir.c
+===================================================================
+--- mono/mono/mini/method-to-ir.c (revision 123986)
++++ mono/mono/mini/method-to-ir.c (revision 123987)
+@@ -5839,7 +5839,21 @@
+ cmethod = (MonoMethod *)mono_method_get_wrapper_data (method, token);
+ cil_method = cmethod;
+ } else if (constrained_call) {
+- cmethod = mono_get_method_constrained (image, token, constrained_call, generic_context, &cil_method);
++ if ((constrained_call->byval_arg.type == MONO_TYPE_VAR || constrained_call->byval_arg.type == MONO_TYPE_MVAR) && cfg->generic_sharing_context) {
++ /* This is needed when using aot + generic sharing, since
++ * the AOT code allows generic sharing for methods with
++ * type parameters having constraints, and
++ * get_method_constrained can't find the method in klass
++ * representing a type var.
++ * The type var is guaranteed to be a reference type in this
++ * case.
++ */
++ cmethod = mini_get_method (cfg, method, token, NULL, generic_context);
++ cil_method = cmethod;
++ g_assert (!cmethod->klass->valuetype);
++ } else {
++ cmethod = mono_get_method_constrained (image, token, constrained_call, generic_context, &cil_method);
++ }
+ } else {
+ cmethod = mini_get_method (cfg, method, token, NULL, generic_context);
+ cil_method = cmethod;