mirror of
				https://github.com/ruby/ruby.git
				synced 2022-11-09 12:17:21 -05:00 
			
		
		
		
	merge revision(s) 67201: [Backport #15650]
eval.c: clear internal errinfo * eval.c (ruby_cleanup): clear internal error info when invoking end procs. [ruby-core:91731] [Bug #15650] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_2_6@67209 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
		
							parent
							
								
									3009f68517
								
							
						
					
					
						commit
						a6be951e29
					
				
					 3 changed files with 24 additions and 1 deletions
				
			
		
							
								
								
									
										1
									
								
								eval.c
									
										
									
									
									
								
							
							
						
						
									
										1
									
								
								eval.c
									
										
									
									
									
								
							|  | @ -188,6 +188,7 @@ ruby_cleanup(volatile int ex) | |||
| 
 | ||||
|       step_0: step++; | ||||
| 	errs[1] = th->ec->errinfo; | ||||
|         if (THROW_DATA_P(th->ec->errinfo)) th->ec->errinfo = Qnil; | ||||
| 	rb_set_safe_level_force(0); | ||||
| 	ruby_init_stack(&errs[STACK_UPPER(errs, 0, 1)]); | ||||
| 
 | ||||
|  |  | |||
|  | @ -154,4 +154,26 @@ class TestBeginEndBlock < Test::Unit::TestCase | |||
|       end | ||||
|     end; | ||||
|   end | ||||
| 
 | ||||
|   if defined?(fork) | ||||
|     def test_internal_errinfo_at_exit | ||||
|       # TODO: use other than break-in-fork to throw an internal | ||||
|       # error info. | ||||
|       error, pid, status = IO.pipe do |r, w| | ||||
|         pid = fork do | ||||
|           r.close | ||||
|           STDERR.reopen(w) | ||||
|           at_exit do | ||||
|             $!.class | ||||
|           end | ||||
|           break | ||||
|         end | ||||
|         w.close | ||||
|         [r.read, *Process.wait2(pid)] | ||||
|       end | ||||
|       assert_not_predicate(status, :success?) | ||||
|       assert_not_predicate(status, :signaled?) | ||||
|       assert_match(/unexpected break/, error) | ||||
|     end | ||||
|   end | ||||
| end | ||||
|  |  | |||
|  | @ -1,6 +1,6 @@ | |||
| #define RUBY_VERSION "2.6.1" | ||||
| #define RUBY_RELEASE_DATE RUBY_RELEASE_YEAR_STR"-"RUBY_RELEASE_MONTH_STR"-"RUBY_RELEASE_DAY_STR | ||||
| #define RUBY_PATCHLEVEL 42 | ||||
| #define RUBY_PATCHLEVEL 43 | ||||
| 
 | ||||
| #define RUBY_RELEASE_YEAR 2019 | ||||
| #define RUBY_RELEASE_MONTH 3 | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 naruse
						naruse