diff options
author | Andy Wingo <wingo@pobox.com> | 2008-10-09 11:09:43 +0200 |
---|---|---|
committer | Andy Wingo <wingo@pobox.com> | 2008-10-09 11:09:43 +0200 |
commit | 5a9634892fb0f68693654d8a59fb75b5747118dc (patch) | |
tree | 15c34b2b7464d43c1d5f8f703172b4d5a89dffa3 | |
parent | 11ea1aba9eb99756e72b6447a93da8d901558299 (diff) | |
download | guile-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.c | 4 |
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)); } } |