summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndy Wingo <wingo@pobox.com>2008-10-09 11:09:43 +0200
committerAndy Wingo <wingo@pobox.com>2008-10-09 11:09:43 +0200
commit5a9634892fb0f68693654d8a59fb75b5747118dc (patch)
tree15c34b2b7464d43c1d5f8f703172b4d5a89dffa3
parent11ea1aba9eb99756e72b6447a93da8d901558299 (diff)
downloadguile-5a9634892fb0f68693654d8a59fb75b5747118dc.tar.gz
fix dynwind + nonlocal entrance/exit + programs bug
* libguile/dynwind.c (scm_i_dowinds): Invoke guard procedures when entering and exiting nonlocally. Previously this procedure was program-racist.
-rw-r--r--libguile/dynwind.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/libguile/dynwind.c b/libguile/dynwind.c
index d856affd4..999ba23e0 100644
--- a/libguile/dynwind.c
+++ b/libguile/dynwind.c
@@ -323,7 +323,7 @@ scm_i_dowinds (SCM to, long delta, void (*turn_func) (void *), void *data)
if (SCM_VARIABLEP (SCM_CAR (wind_key)))
scm_swap_bindings (wind_key, SCM_CDR (wind_elt));
}
- else if (SCM_TYP3 (wind_key) == scm_tc3_closure)
+ else if (scm_is_true (scm_thunk_p (wind_key)))
scm_call_0 (wind_key);
}
}
@@ -359,7 +359,7 @@ scm_i_dowinds (SCM to, long delta, void (*turn_func) (void *), void *data)
if (SCM_VARIABLEP (SCM_CAR (wind_key)))
scm_swap_bindings (wind_key, SCM_CDR (wind_elt));
}
- else if (SCM_TYP3 (wind_key) == scm_tc3_closure)
+ else if (scm_is_true (scm_thunk_p (wind_key)))
scm_call_0 (SCM_CDR (wind_elt));
}
}