diff --git a/lib/modules/__builtin_dirnode.pmod b/lib/modules/__builtin_dirnode.pmod
new file mode 100644
index 0000000000000000000000000000000000000000..4541961566b17f79e3a183c6c98319e7e07f9055
--- /dev/null
+++ b/lib/modules/__builtin_dirnode.pmod
@@ -0,0 +1,12 @@
+#pike __REAL_VERSION__
+
+mapping cache=([]);
+
+mixed `[](string s)
+{
+  if(!zero_type(cache[s])) return cache[s];
+  mixed tmp=_static_modules[s];
+  if(programp(tmp)) tmp=tmp();
+  return cache[s]=tmp;
+}
+
diff --git a/src/modules/static_module_makefile.in b/src/modules/static_module_makefile.in
index f339ffbdaa9d34fb955b1c5774a4fe46d3f65fda..e6f194ec664bb0758d1182d3f6668813460774f0 100644
--- a/src/modules/static_module_makefile.in
+++ b/src/modules/static_module_makefile.in
@@ -1,5 +1,5 @@
 #
-# $Id: static_module_makefile.in,v 1.58 2000/08/14 16:02:24 grubba Exp $
+# $Id: static_module_makefile.in,v 1.59 2001/01/20 13:46:43 hubbe Exp $
 #
 
 
@@ -92,12 +92,13 @@ config.status: $(SRCDIR)/configure
 
 module.pmod: Makefile
 	@echo "Making module.pmod" ; if [ -f $(SRCDIR)/module.pmod.in ]; then \
-	   sed -e "s/@module@/_static_modules.$(MODNAME)/" <$(SRCDIR)/module.pmod.in >module.pmod ;\
+	   sed -e "s/@module@/__builtin_dirnode.$(MODNAME)/" <$(SRCDIR)/module.pmod.in >module.pmod ;\
 	else \
 	  if [ -f ./module.pmod.in ]; then \
-	   sed -e "s/@module@/_static_modules.$(MODNAME)/" <./module.pmod.in >module.pmod ;\
+	   sed -e "s/@module@/__builtin_dirnode.$(MODNAME)/" <./module.pmod.in >module.pmod ;\
 	  else \
-	    echo >module.pmod "#if constant(_static_modules.$(MODNAME));" ;\
+	    echo >>module.pmod "#pike __REAL_VERSION__" ;\
+	    echo >>module.pmod "#if constant(_static_modules.$(MODNAME));" ;\
 	    echo >>module.pmod "inherit _static_modules.$(MODNAME);" ;\
 	    echo >>module.pmod "#endif" ;\
 	  fi ;\
diff --git a/src/testsuite.in b/src/testsuite.in
index 6aa7842f8fe33159c3ef6e36fc86cf2d9237ce48..1496420a3f6f36c8326d3e73f985e84a843c8bfd 100644
--- a/src/testsuite.in
+++ b/src/testsuite.in
@@ -1,4 +1,4 @@
-test_true([["$Id: testsuite.in,v 1.376 2001/01/19 15:19:51 mast Exp $"]]);
+test_true([["$Id: testsuite.in,v 1.377 2001/01/20 13:46:42 hubbe Exp $"]]);
 
 cond([[all_constants()->_verify_internals]],
 [[
@@ -5658,7 +5658,7 @@ test_equal(lower_case((string) ({
 
 // - next_object
 test_true(objectp(next_object()))
-test_any(int e;object o=next_object(); for(e=0;e<10000 && o;e++) o=next_object(o); return o,0)
+test_any(int e;object o=next_object(); for(e=0;e<10000 && (o || objectp(o));e++) o=next_object(o); return o,0)
 
 // - object_program
 test_true(programp(object_program(this_object())))