summaryrefslogtreecommitdiff
path: root/proc.c
diff options
context:
space:
mode:
Diffstat (limited to 'proc.c')
-rw-r--r--proc.c7
1 files changed, 4 insertions, 3 deletions
diff --git a/proc.c b/proc.c
index 3bcb6cfbc8..710ab065d1 100644
--- a/proc.c
+++ b/proc.c
@@ -379,11 +379,12 @@ proc_new(VALUE klass, int is_lambda)
}
}
- if (block->proc) {
- return block->proc;
+ procval = block->proc;
+ if (procval && RBASIC(procval)->klass == klass) {
+ return procval;
}
- procval = vm_make_proc(th, cfp, block);
+ procval = vm_make_proc(th, cfp, block, klass);
if (is_lambda) {
rb_proc_t *proc;