diff options
author | ko1 <ko1@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2017-06-23 08:24:54 +0000 |
---|---|---|
committer | ko1 <ko1@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2017-06-23 08:24:54 +0000 |
commit | a90c696b8bb67eecc5b415d58f55705c0bf3f8f8 (patch) | |
tree | c20f7d0544a5754228eafb28f984c736fea49df4 /thread.c | |
parent | 769ef81ae36325ee0fcb4c27c507e69a00c5e1ea (diff) | |
download | ruby-a90c696b8bb67eecc5b415d58f55705c0bf3f8f8.tar.gz |
rb_catch_protect() accepts enum ruby_tag_type *.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@59157 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'thread.c')
-rw-r--r-- | thread.c | 8 |
1 files changed, 4 insertions, 4 deletions
@@ -4689,22 +4689,22 @@ exec_recursive(VALUE (*func) (VALUE, VALUE, int), VALUE obj, VALUE pairid, VALUE return (*func)(obj, arg, TRUE); } else { + enum ruby_tag_type state; + p.func = func; if (outermost) { - int state; recursive_push(p.list, ID2SYM(recursive_key), 0); recursive_push(p.list, p.objid, p.pairid); result = rb_catch_protect(p.list, exec_recursive_i, (VALUE)&p, &state); if (!recursive_pop(p.list, p.objid, p.pairid)) goto invalid; if (!recursive_pop(p.list, ID2SYM(recursive_key), 0)) goto invalid; - if (state) JUMP_TAG(state); + if (state != TAG_NONE) JUMP_TAG(state); if (result == p.list) { result = (*func)(obj, arg, TRUE); } } else { - enum ruby_tag_type state; volatile VALUE ret = Qundef; recursive_push(p.list, p.objid, p.pairid); PUSH_TAG(); @@ -4718,7 +4718,7 @@ exec_recursive(VALUE (*func) (VALUE, VALUE, int), VALUE obj, VALUE pairid, VALUE "for %+"PRIsVALUE" in %+"PRIsVALUE, sym, rb_thread_current()); } - if (state) JUMP_TAG(state); + if (state != TAG_NONE) JUMP_TAG(state); result = ret; } } |