diff --git a/libguile/eval.c b/libguile/eval.c index e7484376a..ed592af5e 100644 --- a/libguile/eval.c +++ b/libguile/eval.c @@ -2969,11 +2969,12 @@ scm_eval_body (SCM code, SCM env) { if (SCM_ISYMP (SCM_CAR (code))) { - scm_i_scm_pthread_mutex_lock (&source_mutex); + scm_dynwind_begin (0); + scm_dynwind_pthread_mutex_lock (&source_mutex); /* check for race condition */ if (SCM_ISYMP (SCM_CAR (code))) m_expand_body (code, env); - scm_i_pthread_mutex_unlock (&source_mutex); + scm_dynwind_end (); goto again; } } @@ -3367,11 +3368,12 @@ dispatch: { if (SCM_ISYMP (form)) { - scm_i_scm_pthread_mutex_lock (&source_mutex); + scm_dynwind_begin (0); + scm_dynwind_pthread_mutex_lock (&source_mutex); /* check for race condition */ if (SCM_ISYMP (SCM_CAR (x))) m_expand_body (x, env); - scm_i_pthread_mutex_unlock (&source_mutex); + scm_dynwind_end (); goto nontoplevel_begin; } else @@ -4966,11 +4968,12 @@ tail: { if (SCM_ISYMP (SCM_CAR (proc))) { - scm_i_scm_pthread_mutex_lock (&source_mutex); + scm_dynwind_begin (0); + scm_dynwind_pthread_mutex_lock (&source_mutex); /* check for race condition */ if (SCM_ISYMP (SCM_CAR (proc))) m_expand_body (proc, args); - scm_i_pthread_mutex_unlock (&source_mutex); + scm_dynwind_end (); goto again; } else