lang/ruby22: fix setjmp clobbered variables
PR: 206110 Submitted by: dim
This commit is contained in:
parent
b03ef706b3
commit
33ba518bad
Notes:
svn2git
2021-03-31 03:12:20 +00:00
svn path=/head/; revision=428055
@ -165,7 +165,7 @@ RUBY21= "" # PLIST_SUB helpers
|
||||
# Ruby 2.2
|
||||
#
|
||||
RUBY_RELVERSION= 2.2.6
|
||||
RUBY_PORTREVISION= 0
|
||||
RUBY_PORTREVISION= 1
|
||||
RUBY_PORTEPOCH= 1
|
||||
RUBY_PATCHLEVEL= 0
|
||||
RUBY22= "" # PLIST_SUB helpers
|
||||
|
20
lang/ruby22/files/patch-eval.c
Normal file
20
lang/ruby22/files/patch-eval.c
Normal file
@ -0,0 +1,20 @@
|
||||
--- eval.c.orig 2014-12-09 02:16:27.000000000 +0100
|
||||
+++ eval.c 2016-01-10 19:10:59.326340000 +0100
|
||||
@@ -797,7 +797,7 @@ rb_rescue2(VALUE (* b_proc) (ANYARGS), V
|
||||
{
|
||||
int state;
|
||||
rb_thread_t *th = GET_THREAD();
|
||||
- rb_control_frame_t *cfp = th->cfp;
|
||||
+ rb_control_frame_t *volatile cfp = th->cfp;
|
||||
volatile VALUE result = Qfalse;
|
||||
volatile VALUE e_info = th->errinfo;
|
||||
va_list args;
|
||||
@@ -863,7 +863,7 @@ rb_protect(VALUE (* proc) (VALUE), VALUE
|
||||
volatile VALUE result = Qnil;
|
||||
volatile int status;
|
||||
rb_thread_t *th = GET_THREAD();
|
||||
- rb_control_frame_t *cfp = th->cfp;
|
||||
+ rb_control_frame_t *volatile cfp = th->cfp;
|
||||
struct rb_vm_protect_tag protect_tag;
|
||||
rb_jmpbuf_t org_jmpbuf;
|
||||
|
15
lang/ruby22/files/patch-eval_error.c
Normal file
15
lang/ruby22/files/patch-eval_error.c
Normal file
@ -0,0 +1,15 @@
|
||||
--- eval_error.c.orig 2015-01-17 08:47:29.000000000 +0100
|
||||
+++ eval_error.c 2016-01-10 19:11:10.416384000 +0100
|
||||
@@ -80,9 +80,9 @@ static void
|
||||
error_print(void)
|
||||
{
|
||||
volatile VALUE errat = Qundef;
|
||||
- rb_thread_t *th = GET_THREAD();
|
||||
- VALUE errinfo = th->errinfo;
|
||||
- int raised_flag = th->raised_flag;
|
||||
+ rb_thread_t *volatile th = GET_THREAD();
|
||||
+ volatile VALUE errinfo = th->errinfo;
|
||||
+ volatile int raised_flag = th->raised_flag;
|
||||
volatile VALUE eclass = Qundef, e = Qundef;
|
||||
const char *volatile einfo;
|
||||
volatile long elen;
|
13
lang/ruby22/files/patch-thread.c
Normal file
13
lang/ruby22/files/patch-thread.c
Normal file
@ -0,0 +1,13 @@
|
||||
--- thread.c.orig 2015-02-20 14:53:23.000000000 +0100
|
||||
+++ thread.c 2016-01-10 19:11:32.423524000 +0100
|
||||
@@ -462,8 +462,8 @@ rb_threadptr_unlock_all_locking_mutexes(
|
||||
void
|
||||
rb_thread_terminate_all(void)
|
||||
{
|
||||
- rb_thread_t *th = GET_THREAD(); /* main thread */
|
||||
- rb_vm_t *vm = th->vm;
|
||||
+ rb_thread_t *volatile th = GET_THREAD(); /* main thread */
|
||||
+ rb_vm_t *volatile vm = th->vm;
|
||||
|
||||
if (vm->main_thread != th) {
|
||||
rb_bug("rb_thread_terminate_all: called by child thread (%p, %p)",
|
31
lang/ruby22/files/patch-vm_eval.c
Normal file
31
lang/ruby22/files/patch-vm_eval.c
Normal file
@ -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);
|
11
lang/ruby22/files/patch-vm_trace.c
Normal file
11
lang/ruby22/files/patch-vm_trace.c
Normal file
@ -0,0 +1,11 @@
|
||||
--- vm_trace.c.orig 2015-11-08 15:49:09.000000000 +0100
|
||||
+++ vm_trace.c 2016-01-10 19:11:46.862754000 +0100
|
||||
@@ -390,7 +390,7 @@ rb_suppress_tracing(VALUE (*func)(VALUE)
|
||||
volatile int raised;
|
||||
volatile int outer_state;
|
||||
VALUE result = Qnil;
|
||||
- rb_thread_t *th = GET_THREAD();
|
||||
+ rb_thread_t *volatile th = GET_THREAD();
|
||||
int state;
|
||||
const int tracing = th->trace_arg ? 1 : 0;
|
||||
rb_trace_arg_t dummy_trace_arg;
|
Loading…
Reference in New Issue
Block a user