diff --git a/libguile/hashtab.c b/libguile/hashtab.c index 894fbf7d1..61d744a9d 100644 --- a/libguile/hashtab.c +++ b/libguile/hashtab.c @@ -774,14 +774,14 @@ set_weak_cdr (void *data) if (SCM_NIMP (SCM_WEAK_PAIR_CDR (d->pair)) && !SCM_NIMP (d->new_val)) { - GC_unregister_disappearing_link ((void *) SCM_CDRLOC (d->pair)); + GC_unregister_disappearing_link ((GC_PTR) SCM_CDRLOC (d->pair)); SCM_SETCDR (d->pair, d->new_val); } else { SCM_SETCDR (d->pair, d->new_val); - SCM_I_REGISTER_DISAPPEARING_LINK ((void *) SCM_CDRLOC (d->pair), - SCM2PTR (d->new_val)); + SCM_I_REGISTER_DISAPPEARING_LINK ((GC_PTR) SCM_CDRLOC (d->pair), + (GC_PTR) SCM2PTR (d->new_val)); } return NULL; } diff --git a/libguile/vectors.c b/libguile/vectors.c index 1cf8f2fc4..2805278f0 100644 --- a/libguile/vectors.c +++ b/libguile/vectors.c @@ -278,7 +278,8 @@ scm_c_vector_set_x (SCM v, size_t k, SCM obj) { /* Make it a weak pointer. */ GC_PTR link = (GC_PTR) & ((SCM_I_VECTOR_WELTS (v))[k]); - SCM_I_REGISTER_DISAPPEARING_LINK (link, obj); + SCM_I_REGISTER_DISAPPEARING_LINK (link, + (GC_PTR) SCM2PTR (obj)); } } else if (SCM_I_ARRAYP (v) && SCM_I_ARRAY_NDIM (v) == 1) @@ -296,7 +297,8 @@ scm_c_vector_set_x (SCM v, size_t k, SCM obj) { /* Make it a weak pointer. */ GC_PTR link = (GC_PTR) & ((SCM_I_VECTOR_WELTS (vv))[k]); - SCM_I_REGISTER_DISAPPEARING_LINK (link, obj); + SCM_I_REGISTER_DISAPPEARING_LINK (link, + (GC_PTR) SCM2PTR (obj)); } } else diff --git a/libguile/weaks.c b/libguile/weaks.c index 1d5fcf469..92d351e51 100644 --- a/libguile/weaks.c +++ b/libguile/weaks.c @@ -1,4 +1,4 @@ -/* Copyright (C) 1995,1996,1998,2000,2001, 2003, 2006, 2008, 2009, 2010 Free Software Foundation, Inc. +/* Copyright (C) 1995,1996,1998,2000,2001, 2003, 2006, 2008, 2009, 2010, 2011 Free Software Foundation, Inc. * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public License @@ -62,11 +62,9 @@ scm_weak_car_pair (SCM car, SCM cdr) cell->word_1 = cdr; if (SCM_NIMP (car)) - { - /* Weak car cells make sense iff the car is non-immediate. */ - SCM_I_REGISTER_DISAPPEARING_LINK ((GC_PTR) &cell->word_0, - (GC_PTR) SCM_UNPACK (car)); - } + /* Weak car cells make sense iff the car is non-immediate. */ + SCM_I_REGISTER_DISAPPEARING_LINK ((GC_PTR) &cell->word_0, + (GC_PTR) SCM2PTR (car)); return (SCM_PACK (cell)); } @@ -83,11 +81,9 @@ scm_weak_cdr_pair (SCM car, SCM cdr) cell->word_1 = cdr; if (SCM_NIMP (cdr)) - { - /* Weak cdr cells make sense iff the cdr is non-immediate. */ - SCM_I_REGISTER_DISAPPEARING_LINK ((GC_PTR) &cell->word_1, - (GC_PTR) SCM_UNPACK (cdr)); - } + /* Weak cdr cells make sense iff the cdr is non-immediate. */ + SCM_I_REGISTER_DISAPPEARING_LINK ((GC_PTR) &cell->word_1, + (GC_PTR) SCM2PTR (cdr)); return (SCM_PACK (cell)); } @@ -103,15 +99,11 @@ scm_doubly_weak_pair (SCM car, SCM cdr) cell->word_1 = cdr; if (SCM_NIMP (car)) - { - SCM_I_REGISTER_DISAPPEARING_LINK ((GC_PTR) &cell->word_0, - (GC_PTR) SCM_UNPACK (car)); - } + SCM_I_REGISTER_DISAPPEARING_LINK ((GC_PTR) &cell->word_0, + (GC_PTR) SCM2PTR (car)); if (SCM_NIMP (cdr)) - { - SCM_I_REGISTER_DISAPPEARING_LINK ((GC_PTR) &cell->word_1, - (GC_PTR) SCM_UNPACK (cdr)); - } + SCM_I_REGISTER_DISAPPEARING_LINK ((GC_PTR) &cell->word_1, + (GC_PTR) SCM2PTR (cdr)); return (SCM_PACK (cell)); }