summaryrefslogtreecommitdiff
path: root/libguile/dynwind.c
diff options
context:
space:
mode:
Diffstat (limited to 'libguile/dynwind.c')
-rw-r--r--libguile/dynwind.c10
1 files changed, 10 insertions, 0 deletions
diff --git a/libguile/dynwind.c b/libguile/dynwind.c
index 5eccb176f..18e38b995 100644
--- a/libguile/dynwind.c
+++ b/libguile/dynwind.c
@@ -257,6 +257,11 @@ scm_i_dowinds (SCM to, long delta, void (*turn_func) (void *), void *data)
if (WINDER_REWIND_P (wind_elt))
WINDER_PROC (wind_elt) (WINDER_DATA (wind_elt));
}
+ else if (SCM_WITH_FLUIDS_P (wind_elt))
+ {
+ scm_i_swap_with_fluids (wind_elt,
+ SCM_I_CURRENT_THREAD->dynamic_state);
+ }
else
{
wind_key = SCM_CAR (wind_elt);
@@ -294,6 +299,11 @@ scm_i_dowinds (SCM to, long delta, void (*turn_func) (void *), void *data)
if (!WINDER_REWIND_P (wind_elt))
WINDER_PROC (wind_elt) (WINDER_DATA (wind_elt));
}
+ else if (SCM_WITH_FLUIDS_P (wind_elt))
+ {
+ scm_i_swap_with_fluids (wind_elt,
+ SCM_I_CURRENT_THREAD->dynamic_state);
+ }
else
{
wind_key = SCM_CAR (wind_elt);