summaryrefslogtreecommitdiff
path: root/libguile/fluids.c
diff options
context:
space:
mode:
Diffstat (limited to 'libguile/fluids.c')
-rw-r--r--libguile/fluids.c23
1 files changed, 9 insertions, 14 deletions
diff --git a/libguile/fluids.c b/libguile/fluids.c
index c3dd1c9ea..472f92a06 100644
--- a/libguile/fluids.c
+++ b/libguile/fluids.c
@@ -343,22 +343,17 @@ fluid_ref (scm_t_dynamic_state *dynamic_state, SCM fluid)
entry = scm_cache_lookup (&dynamic_state->cache, fluid);
if (scm_is_eq (SCM_PACK (entry->key), fluid))
- val = SCM_PACK (entry->value);
- else
- {
- if (SCM_I_FLUID_THREAD_LOCAL_P (fluid))
- val = scm_hashq_ref (dynamic_state->thread_local_values, fluid,
- SCM_UNDEFINED);
- else
- val = scm_weak_table_refq (dynamic_state->values, fluid,
- SCM_UNDEFINED);
+ return SCM_PACK (entry->value);
- if (SCM_UNBNDP (val))
- val = SCM_I_FLUID_DEFAULT (fluid);
+ if (SCM_I_FLUID_THREAD_LOCAL_P (fluid))
+ val = scm_hashq_ref (dynamic_state->thread_local_values, fluid,
+ SCM_I_FLUID_DEFAULT (fluid));
+ else
+ val = scm_weak_table_refq (dynamic_state->values, fluid,
+ SCM_I_FLUID_DEFAULT (fluid));
- /* Cache this lookup. */
- fluid_set_x (dynamic_state, fluid, val);
- }
+ /* Cache this lookup. */
+ fluid_set_x (dynamic_state, fluid, val);
return val;
}