Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 8 Dec 2016 02:57:06 +0000 (UTC)
From:      Steve Wills <swills@FreeBSD.org>
To:        ports-committers@freebsd.org, svn-ports-all@freebsd.org, svn-ports-head@freebsd.org
Subject:   svn commit: r428094 - in head: Mk lang/ruby21/files
Message-ID:  <201612080257.uB82v61o011357@repo.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: swills
Date: Thu Dec  8 02:57:06 2016
New Revision: 428094
URL: https://svnweb.freebsd.org/changeset/ports/428094

Log:
  lang/ruby21: fix setjmp clobbered variables
  
  PR:		206108
  Submitted by:	dim

Added:
  head/lang/ruby21/files/patch-eval.c   (contents, props changed)
  head/lang/ruby21/files/patch-eval_error.c   (contents, props changed)
  head/lang/ruby21/files/patch-thread.c   (contents, props changed)
  head/lang/ruby21/files/patch-vm_eval.c   (contents, props changed)
  head/lang/ruby21/files/patch-vm_trace.c   (contents, props changed)
Modified:
  head/Mk/bsd.ruby.mk

Modified: head/Mk/bsd.ruby.mk
==============================================================================
--- head/Mk/bsd.ruby.mk	Thu Dec  8 02:34:44 2016	(r428093)
+++ head/Mk/bsd.ruby.mk	Thu Dec  8 02:57:06 2016	(r428094)
@@ -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

Added: head/lang/ruby21/files/patch-eval.c
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ head/lang/ruby21/files/patch-eval.c	Thu Dec  8 02:57:06 2016	(r428094)
@@ -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;
+ 

Added: head/lang/ruby21/files/patch-eval_error.c
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ head/lang/ruby21/files/patch-eval_error.c	Thu Dec  8 02:57:06 2016	(r428094)
@@ -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;

Added: head/lang/ruby21/files/patch-thread.c
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ head/lang/ruby21/files/patch-thread.c	Thu Dec  8 02:57:06 2016	(r428094)
@@ -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)",

Added: head/lang/ruby21/files/patch-vm_eval.c
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ head/lang/ruby21/files/patch-vm_eval.c	Thu Dec  8 02:57:06 2016	(r428094)
@@ -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);

Added: head/lang/ruby21/files/patch-vm_trace.c
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ head/lang/ruby21/files/patch-vm_trace.c	Thu Dec  8 02:57:06 2016	(r428094)
@@ -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;



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201612080257.uB82v61o011357>