mirror of
https://git.freebsd.org/ports.git
synced 2025-07-18 17:59:20 -04:00
lang/ruby21: fix setjmp clobbered variables
PR: 206108 Submitted by: dim
This commit is contained in:
parent
7c4332af9c
commit
14dbe10ed5
Notes:
svn2git
2021-03-31 03:12:20 +00:00
svn path=/head/; revision=428094
6 changed files with 91 additions and 1 deletions
|
@ -155,7 +155,7 @@ RUBY?= ${LOCALBASE}/bin/${RUBY_NAME}
|
|||
# Ruby 2.1
|
||||
#
|
||||
RUBY_RELVERSION= 2.1.10
|
||||
RUBY_PORTREVISION= 0
|
||||
RUBY_PORTREVISION= 1
|
||||
RUBY_PORTEPOCH= 1
|
||||
RUBY_PATCHLEVEL= 0
|
||||
RUBY21= "" # PLIST_SUB helpers
|
||||
|
|
20
lang/ruby21/files/patch-eval.c
Normal file
20
lang/ruby21/files/patch-eval.c
Normal file
|
@ -0,0 +1,20 @@
|
|||
--- eval.c.orig 2015-01-21 17:09:59.000000000 +0100
|
||||
+++ eval.c 2016-01-09 22:22:34.009232000 +0100
|
||||
@@ -743,7 +743,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;
|
||||
@@ -809,7 +809,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/ruby21/files/patch-eval_error.c
Normal file
15
lang/ruby21/files/patch-eval_error.c
Normal file
|
@ -0,0 +1,15 @@
|
|||
--- eval_error.c.orig 2013-06-24 15:03:35.000000000 +0200
|
||||
+++ eval_error.c 2016-01-10 01:00:43.200335000 +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/ruby21/files/patch-thread.c
Normal file
13
lang/ruby21/files/patch-thread.c
Normal file
|
@ -0,0 +1,13 @@
|
|||
--- thread.c.orig 2015-03-09 18:40:36.000000000 +0100
|
||||
+++ thread.c 2016-01-10 18:50:57.451040000 +0100
|
||||
@@ -420,8 +420,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/ruby21/files/patch-vm_eval.c
Normal file
31
lang/ruby21/files/patch-vm_eval.c
Normal file
|
@ -0,0 +1,31 @@
|
|||
--- vm_eval.c.orig 2015-07-03 10:55:40.000000000 +0200
|
||||
+++ vm_eval.c 2016-01-10 18:53:23.030473000 +0100
|
||||
@@ -1062,7 +1062,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();
|
||||
@@ -1190,7 +1190,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;
|
||||
@@ -1843,8 +1843,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/ruby21/files/patch-vm_trace.c
Normal file
11
lang/ruby21/files/patch-vm_trace.c
Normal file
|
@ -0,0 +1,11 @@
|
|||
--- vm_trace.c.orig 2015-11-18 12:26:40.000000000 +0100
|
||||
+++ vm_trace.c 2016-01-10 18:54:08.421021000 +0100
|
||||
@@ -392,7 +392,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…
Add table
Reference in a new issue