From 8b7f0bb35b67d5ca623d45749acda0f38a007e42 Mon Sep 17 00:00:00 2001 From: Marius Vollmer Date: Mon, 7 Mar 2005 21:39:56 +0000 Subject: [PATCH] * continuations.c (scm_make_continuation): No longer a critical section. (scm_dynthrow): Abort when scm_i_critical_section_level is not zero. --- libguile/continuations.c | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/libguile/continuations.c b/libguile/continuations.c index 50c460d01..5a7dde409 100644 --- a/libguile/continuations.c +++ b/libguile/continuations.c @@ -21,7 +21,9 @@ #include "libguile/_scm.h" #include +#include +#include "libguile/async.h" #include "libguile/debug.h" #include "libguile/root.h" #include "libguile/stackchk.h" @@ -267,6 +269,12 @@ scm_dynthrow (SCM cont, SCM val) SCM_STACKITEM *dst = thread->continuation_base; SCM_STACKITEM stack_top_element; + if (scm_i_critical_section_level) + { + fprintf (stderr, "continuation invoked from within critical section.\n"); + abort (); + } + #if SCM_STACK_GROWS_UP if (dst + continuation->num_stack_items >= &stack_top_element) grow_stack (cont, val); -- 2.20.1