summaryrefslogtreecommitdiffstats
path: root/eval_proc.c
diff options
context:
space:
mode:
Diffstat (limited to 'eval_proc.c')
-rw-r--r--eval_proc.c12
1 files changed, 12 insertions, 0 deletions
diff --git a/eval_proc.c b/eval_proc.c
index 3ff3e3b1d..a53415294 100644
--- a/eval_proc.c
+++ b/eval_proc.c
@@ -1023,6 +1023,18 @@ bmcall(VALUE args, VALUE method)
return rb_method_call(RARRAY_LEN(a), RARRAY_PTR(a), method);
}
+VALUE
+rb_proc_new(
+ VALUE (*func)(ANYARGS), /* VALUE yieldarg[, VALUE procarg] */
+ VALUE val)
+{
+ yarv_proc_t *proc;
+ VALUE procval = rb_iterate((VALUE(*)(VALUE))mproc, 0, func, val);
+ GetProcPtr(procval, proc);
+ ((NODE*)proc->block.iseq)->u3.state = 1;
+ return procval;
+}
+
/*
* call-seq:
* meth.to_proc => prc