diff --git a/libguile/gc.h b/libguile/gc.h index 3b0706686..c67edfddf 100644 --- a/libguile/gc.h +++ b/libguile/gc.h @@ -86,7 +86,7 @@ typedef scm_cell * SCM_CELLPTR; */ #define SCM_VALIDATE_CELL(x) \ - (SCM_DEBUG_CELL_ACCESSES ? (!scm_cellp (x) ? abort () : 1) : 1) + (SCM_DEBUG_CELL_ACCESSES ? (!scm_cellp (x) ? (abort (), 0) : 1) : 1) #define SCM_CELL_WORD(x, n) \ ((SCM_VALIDATE_CELL (x)), \ @@ -133,8 +133,8 @@ typedef scm_cell * SCM_CELLPTR; (SCM_SETCDR ((x), SCM_PACK (SCM_UNPACK (SCM_CDR (x)) | (y)))) #define SCM_CELL_WORD_LOC(x, n) (&SCM_CELL_WORD (x, n)) -#define SCM_CARLOC(x) (&SCM_CAR (x)) -#define SCM_CDRLOC(x) (&SCM_CDR (x)) +#define SCM_CARLOC(x) (&SCM_PACK (((scm_bits_t *) SCM2PTR (x)) [0])) +#define SCM_CDRLOC(x) (&SCM_PACK (((scm_bits_t *) SCM2PTR (x)) [1])) /* SCM_PTR_LT and friends define how to compare two SCM_CELLPTRs (which may