summaryrefslogtreecommitdiff
path: root/libguile/modules.c
diff options
context:
space:
mode:
authorNeil Jerram <neil@ossau.uklinux.net>2008-02-01 22:51:34 +0000
committerNeil Jerram <neil@ossau.uklinux.net>2008-02-01 22:51:34 +0000
commit3ac8359afda0372374bf555fcecc51bcd471cd33 (patch)
tree1079e0c48338aab9dd481a0f68e6287238a00776 /libguile/modules.c
parent300b1ae58a43756bdac8603fc338cbce9efb754e (diff)
downloadguile-3ac8359afda0372374bf555fcecc51bcd471cd33.tar.gz
* modules.c (the_root_module): Moved before scm_current_module.
(scm_current_module): Return the root module if `the-module' fluid gives #f. * standalone/Makefile.am: Add stanza for test-with-guile-module. * standalone/test-with-guile-module.c: New test.
Diffstat (limited to 'libguile/modules.c')
-rw-r--r--libguile/modules.c26
1 files changed, 14 insertions, 12 deletions
diff --git a/libguile/modules.c b/libguile/modules.c
index 003fbd37b..ea7305c17 100644
--- a/libguile/modules.c
+++ b/libguile/modules.c
@@ -40,12 +40,25 @@ scm_t_bits scm_module_tag;
static SCM the_module;
+static SCM the_root_module_var;
+
+static SCM
+the_root_module ()
+{
+ if (scm_module_system_booted_p)
+ return SCM_VARIABLE_REF (the_root_module_var);
+ else
+ return SCM_BOOL_F;
+}
+
SCM_DEFINE (scm_current_module, "current-module", 0, 0, 0,
(),
"Return the current module.")
#define FUNC_NAME s_scm_current_module
{
- return scm_fluid_ref (the_module);
+ SCM curr = scm_fluid_ref (the_module);
+
+ return scm_is_true (curr) ? curr : the_root_module ();
}
#undef FUNC_NAME
@@ -230,17 +243,6 @@ scm_env_top_level (SCM env)
SCM_SYMBOL (sym_module, "module");
-static SCM the_root_module_var;
-
-static SCM
-the_root_module ()
-{
- if (scm_module_system_booted_p)
- return SCM_VARIABLE_REF (the_root_module_var);
- else
- return SCM_BOOL_F;
-}
-
SCM
scm_lookup_closure_module (SCM proc)
{