diff --git a/libguile/environments.c b/libguile/environments.c index a94f119cd..4534bab82 100644 --- a/libguile/environments.c +++ b/libguile/environments.c @@ -96,7 +96,7 @@ scm_error_environment_immutable_location (const char *func, SCM env, SCM symbol) SCM scm_make_environment (void *type) { - return scm_cell (scm_tc16_environment, (scm_t_bits) type); + SCM_RETURN_NEWSMOB (scm_tc16_environment, type); } @@ -645,10 +645,12 @@ struct core_environments_base { static SCM core_environments_observe (SCM env, scm_environment_observer proc, SCM data, int weak_p) { - SCM observer = scm_double_cell (scm_tc16_observer, - SCM_UNPACK (env), - SCM_UNPACK (data), - (scm_t_bits) proc); + SCM observer; + + SCM_NEWSMOB3 (observer, scm_tc16_observer, + SCM_UNPACK (env), + SCM_UNPACK (data), + (scm_t_bits) proc); if (!weak_p) {