diff --git a/libguile/ChangeLog b/libguile/ChangeLog index 799feea7d..23c2d5da5 100644 --- a/libguile/ChangeLog +++ b/libguile/ChangeLog @@ -1,3 +1,8 @@ +2004-10-08 Han-Wen Nienhuys + + * inline.h (scm_double_cell): abort if GC running. + (scm_cell): idem. + 2004-10-04 Marius Vollmer * error.c (scm_wrong_type_arg): Do not talk about "argument" for diff --git a/libguile/error.c b/libguile/error.c index d67e74d1a..28b5bc150 100644 --- a/libguile/error.c +++ b/libguile/error.c @@ -47,7 +47,6 @@ #endif - /* {Errors and Exceptional Conditions} */ diff --git a/libguile/inline.h b/libguile/inline.h index 19cd2ba54..d3ba8dfe5 100644 --- a/libguile/inline.h +++ b/libguile/inline.h @@ -63,6 +63,11 @@ SCM_C_INLINE SCM scm_cell (scm_t_bits car, scm_t_bits cdr) { + if (scm_gc_running_p) + { + abort(); + } + SCM z; /* We retrieve the SCM pointer only once since the call to SCM_FREELIST_LOC will be slightly expensive when we support @@ -161,6 +166,11 @@ SCM scm_double_cell (scm_t_bits car, scm_t_bits cbr, scm_t_bits ccr, scm_t_bits cdr) { + if (scm_gc_running_p) + { + abort(); + } + SCM z; SCM *freelist = SCM_FREELIST_LOC (scm_i_freelist2);