summaryrefslogtreecommitdiff
path: root/lang/ruby22/files/patch-vm_eval.c
diff options
context:
space:
mode:
authorSteve Wills <swills@FreeBSD.org>2016-12-07 12:47:30 +0000
committerSteve Wills <swills@FreeBSD.org>2016-12-07 12:47:30 +0000
commit33ba518bad0a8d7836ba0d2c3c258ec4be519970 (patch)
treed9a90850d0125875f654045ee3ee9b78ab1e0556 /lang/ruby22/files/patch-vm_eval.c
parentUpdate to the 20161206 snapshot of GCC 5.4.1. (diff)
lang/ruby22: fix setjmp clobbered variables
PR: 206110 Submitted by: dim
Diffstat (limited to 'lang/ruby22/files/patch-vm_eval.c')
-rw-r--r--lang/ruby22/files/patch-vm_eval.c31
1 files changed, 31 insertions, 0 deletions
diff --git a/lang/ruby22/files/patch-vm_eval.c b/lang/ruby22/files/patch-vm_eval.c
new file mode 100644
index 000000000000..350be9dc9325
--- /dev/null
+++ b/lang/ruby22/files/patch-vm_eval.c
@@ -0,0 +1,31 @@
+--- vm_eval.c.orig 2015-11-29 10:01:12.000000000 +0100
++++ vm_eval.c 2016-01-10 19:11:40.066355000 +0100
+@@ -1111,7 +1111,7 @@ rb_iterate(VALUE (* it_proc) (VALUE), VA
+ int state;
+ volatile VALUE retval = Qnil;
+ NODE *node = NEW_IFUNC(bl_proc, data2);
+- rb_thread_t *th = GET_THREAD();
++ rb_thread_t *volatile th = GET_THREAD();
+ rb_control_frame_t *volatile cfp = th->cfp;
+
+ node->nd_aid = rb_frame_this_func();
+@@ -1239,7 +1239,7 @@ eval_string_with_cref(VALUE self, VALUE
+ int state;
+ VALUE result = Qundef;
+ VALUE envval;
+- rb_thread_t *th = GET_THREAD();
++ rb_thread_t *volatile th = GET_THREAD();
+ rb_env_t *env = NULL;
+ rb_block_t block, *base_block;
+ volatile int parse_in_eval;
+@@ -1983,8 +1983,8 @@ rb_catch_protect(VALUE t, rb_block_call_
+ {
+ int state;
+ volatile VALUE val = Qnil; /* OK */
+- rb_thread_t *th = GET_THREAD();
+- rb_control_frame_t *saved_cfp = th->cfp;
++ rb_thread_t *volatile th = GET_THREAD();
++ rb_control_frame_t *volatile saved_cfp = th->cfp;
+ volatile VALUE tag = t;
+
+ TH_PUSH_TAG(th);