diff --git a/libguile/dynwind.c b/libguile/dynwind.c index 304ba7711..3108f17c6 100644 --- a/libguile/dynwind.c +++ b/libguile/dynwind.c @@ -186,7 +186,8 @@ scm_swap_bindings (SCM glocs, SCM vals) while (SCM_NIMP (vals)) { tmp = SCM_GLOC_VAL (SCM_CAR (glocs)); - SCM_SETCDR (SCM_CAR (glocs) - 1L, SCM_CAR (vals)); + SCM_SETCDR (SCM_PACK (SCM_UNPACK (SCM_CAR (glocs)) - 1L), + SCM_CAR (vals)); SCM_SETCAR (vals, tmp); glocs = SCM_CDR (glocs); vals = SCM_CDR (vals);