From 8ee5c54bc5b0f5f174b65ae3de8d12f4c89ca5d5 Mon Sep 17 00:00:00 2001 From: nobu Date: Tue, 15 Mar 2005 14:12:53 +0000 Subject: * eval.c (recursive_check, recursive_push): more restrictive check. fixed: [ruby-dev:25916] git-svn-id: http://svn.ruby-lang.org/repos/ruby/trunk@8151 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- ChangeLog | 9 +++++++-- eval.c | 4 ++-- 2 files changed, 9 insertions(+), 4 deletions(-) diff --git a/ChangeLog b/ChangeLog index 15fba1ef3..b84d79dcc 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +Tue Mar 15 23:12:36 2005 Nobuyoshi Nakada + + * eval.c (recursive_check, recursive_push): more restrictive check. + fixed: [ruby-dev:25916] + Tue Mar 15 16:38:31 2005 Hidetoshi NAGAI * ext/tk/tkutil/tkutil.c (ary2list): give wrong arguments to hash2kv() @@ -17,9 +22,9 @@ Mon Mar 14 12:21:03 2005 Hidetoshi NAGAI Mon Mar 14 00:13:49 2005 Hidetoshi NAGAI * ext/tk/lib/tk/timer.rb (TkRTTimer): correct calculation of offset - value. get a little better accuracy. + value. get a little better accuracy. - * ext/tk/sample/demos-en/widget: use a binding with no local variables + * ext/tk/sample/demos-en/widget: use a binding with no local variables when eval a sample script. * ext/tk/sample/demos-en/bind.rb: ditto. diff --git a/eval.c b/eval.c index e50bbed4f..e2b04b709 100644 --- a/eval.c +++ b/eval.c @@ -13002,7 +13002,7 @@ recursive_check(obj) else { VALUE list = rb_hash_aref(hash, ID2SYM(ruby_frame->this_func)); - if (NIL_P(list)) return Qfalse; + if (NIL_P(list) || TYPE(list) != T_ARRAY) return Qfalse; return rb_ary_includes(list, rb_obj_id(obj)); } } @@ -13023,7 +13023,7 @@ recursive_push(obj) else { list = rb_hash_aref(hash, sym); } - if (NIL_P(list)) { + if (NIL_P(list) || TYPE(list) != T_ARRAY) { list = rb_ary_new(); rb_hash_aset(hash, sym, list); } -- cgit