$NetBSD: patch-at,v 1.2 2005/11/02 08:56:40 taca Exp $

--- variable.c.orig	2005-07-27 12:07:01.000000000 +0900
+++ 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, recur
     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) {
