mirror of
https://github.com/ruby/ruby.git
synced 2025-09-16 17:14:01 +02:00
merge revision(s) 43208: [Backport #9003]
* compar.c (cmp_eq): fail if recursion. [ruby-core:57736] [Bug #9003] * thread.c (rb_exec_recursive_paired_outer): new function which is combinnation of paired and outer variants. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_2_0_0@43230 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
parent
a577137cfd
commit
c05d019cb4
6 changed files with 36 additions and 2 deletions
12
thread.c
12
thread.c
|
@ -4877,6 +4877,18 @@ rb_exec_recursive_outer(VALUE (*func) (VALUE, VALUE, int), VALUE obj, VALUE arg)
|
|||
return exec_recursive(func, obj, 0, arg, 1);
|
||||
}
|
||||
|
||||
/*
|
||||
* If recursion is detected on the current method, obj and paired_obj,
|
||||
* the outermost func will be called with (obj, arg, Qtrue). All inner
|
||||
* func will be short-circuited using throw.
|
||||
*/
|
||||
|
||||
VALUE
|
||||
rb_exec_recursive_paired_outer(VALUE (*func) (VALUE, VALUE, int), VALUE obj, VALUE paired_obj, VALUE arg)
|
||||
{
|
||||
return exec_recursive(func, obj, rb_obj_id(paired_obj), arg, 1);
|
||||
}
|
||||
|
||||
/*
|
||||
* call-seq:
|
||||
* thr.backtrace -> array
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue