From 79958f7c74f5ad554f5c39aeee633586ba9d2bfc Mon Sep 17 00:00:00 2001 From: nobu Date: Wed, 28 Sep 2005 15:58:32 +0000 Subject: * eval.c (ev_const_get), variable.c (rb_const_get_0): retry only when autoload succeeded. * variable.c (rb_autoload_load): now return true if autoload succeeded. fixed: [ruby-dev:27331] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_1_8@9333 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- variable.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) (limited to 'variable.c') diff --git a/variable.c b/variable.c index 34a978f253..610dae2261 100644 --- a/variable.c +++ b/variable.c @@ -1329,7 +1329,7 @@ autoload_delete(mod, id) return (NODE *)load; } -void +VALUE rb_autoload_load(klass, id) VALUE klass; ID id; @@ -1338,9 +1338,9 @@ rb_autoload_load(klass, id) NODE *load = autoload_delete(klass, id); if (!load || !(file = load->nd_lit) || rb_provided(RSTRING(file)->ptr)) { - const_missing(klass, id); + return Qfalse; } - rb_require_safe(file, load->nd_nth); + return rb_require_safe(file, load->nd_nth); } static VALUE @@ -1406,7 +1406,7 @@ rb_const_get_0(klass, id, exclude, recurse) while (tmp) { while (RCLASS(tmp)->iv_tbl && st_lookup(RCLASS(tmp)->iv_tbl,id,&value)) { if (value == Qundef) { - rb_autoload_load(tmp, id); + if (!RTEST(rb_autoload_load(tmp, id))) break; continue; } if (exclude && tmp == rb_cObject && klass != rb_cObject) { -- cgit v1.2.1