summaryrefslogtreecommitdiff
path: root/eval.c
diff options
context:
space:
mode:
Diffstat (limited to 'eval.c')
-rw-r--r--eval.c7
1 files changed, 6 insertions, 1 deletions
diff --git a/eval.c b/eval.c
index 38c8b84cdc..0c6aceee7e 100644
--- a/eval.c
+++ b/eval.c
@@ -914,7 +914,12 @@ VALUE
rb_yield(VALUE val)
{
volatile VALUE tmp = val;
- tmp = rb_yield_0(1, &val);
+ if (val == Qundef) {
+ tmp = rb_yield_0(0, 0);
+ }
+ else {
+ tmp = rb_yield_0(1, &val);
+ }
return tmp;
}