From 8ae45d642f086128e9f632cb8320d78bf5528735 Mon Sep 17 00:00:00 2001 From: akr Date: Tue, 27 Jun 2006 01:48:29 +0000 Subject: [PATCH] * eval.c (rb_yield_0): avoid core dump. [ruby-dev:28840] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@10407 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- ChangeLog | 4 ++++ eval.c | 5 ++++- 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/ChangeLog b/ChangeLog index 5ebf0b308a..4d9fc6d544 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,7 @@ +Tue Jun 27 10:46:53 2006 Tanaka Akira + + * eval.c (rb_yield_0): avoid core dump. [ruby-dev:28840] + Mon Jun 26 11:03:00 2006 Eric Hodel * lib/rdoc/ri: Add options to limit the ri search path. diff --git a/eval.c b/eval.c index ec1beb3acd..cca4c44c61 100644 --- a/eval.c +++ b/eval.c @@ -4740,7 +4740,10 @@ rb_yield_0(VALUE val, VALUE self, VALUE klass /* OK */, int flags) } else { if (pcall) { - val = RARRAY(val)->ptr[0]; + if (RARRAY(val)->len == 0) + val = Qnil; + else + val = RARRAY(val)->ptr[0]; } assign(self, var, val, pcall); }