summaryrefslogtreecommitdiff
path: root/vm_eval.c
diff options
context:
space:
mode:
author卜部昌平 <shyouhei@ruby-lang.org>2019-08-26 15:27:48 +0900
committer卜部昌平 <shyouhei@ruby-lang.org>2019-08-27 15:52:26 +0900
commitaf5e2566405e4808a6d0a29c5b7d305d6fc0aada (patch)
treedcf0697d8b5b5c441025ca8bf4613e44aa21dea5 /vm_eval.c
parent703783324c16b8b2b50210d1a7d1119902abbb8b (diff)
rb_catch now free from ANYARGS
After 5e86b005c0f2ef30df2f9906c7e2f3abefe286a2, I now think ANYARGS is dangerous and should be extinct. This commit deletes ANYARGS from rb_catch, and fixes some bugs revealed by that.
Diffstat (limited to 'vm_eval.c')
-rw-r--r--vm_eval.c6
1 files changed, 3 insertions, 3 deletions
diff --git a/vm_eval.c b/vm_eval.c
index e9045bbb41..8c7e01edce 100644
--- a/vm_eval.c
+++ b/vm_eval.c
@@ -1921,7 +1921,7 @@ rb_throw(const char *tag, VALUE val)
}
static VALUE
-catch_i(VALUE tag, VALUE data)
+catch_i(RB_BLOCK_CALL_FUNC_ARGLIST(tag, _))
{
return rb_yield_0(1, &tag);
}
@@ -1985,7 +1985,7 @@ rb_f_catch(int argc, VALUE *argv, VALUE self)
}
VALUE
-rb_catch(const char *tag, VALUE (*func)(), VALUE data)
+rb_catch(const char *tag, rb_block_call_func_t func, VALUE data)
{
VALUE vtag = tag ? rb_sym_intern_ascii_cstr(tag) : rb_obj_alloc(rb_cObject);
return rb_catch_obj(vtag, func, data);
@@ -2027,7 +2027,7 @@ rb_catch_protect(VALUE t, rb_block_call_func *func, VALUE data, enum ruby_tag_ty
}
VALUE
-rb_catch_obj(VALUE t, VALUE (*func)(), VALUE data)
+rb_catch_obj(VALUE t, rb_block_call_func_t func, VALUE data)
{
enum ruby_tag_type state;
rb_execution_context_t *ec = GET_EC();