mirror of
https://git.savannah.gnu.org/git/guile.git
synced 2025-05-20 19:50:24 +02:00
correct use of SCM2PTR in SCM_I_REGISTER_DISAPPEARING_LINK forms
* libguile/hashtab.c (set_weak_cdr): * libguile/vectors.c (scm_c_vector_set_x): * libguile/weaks.c (scm_weak_car_pair, scm_weak_cdr_pair): (scm_doubly_weak_pair): Use SCM2PTR for the target of SCM_I_REGISTER_DISAPPEARING_LINK calls.
This commit is contained in:
parent
393baa8a44
commit
d3464bb6e2
3 changed files with 18 additions and 24 deletions
|
@ -774,14 +774,14 @@ set_weak_cdr (void *data)
|
||||||
|
|
||||||
if (SCM_NIMP (SCM_WEAK_PAIR_CDR (d->pair)) && !SCM_NIMP (d->new_val))
|
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);
|
SCM_SETCDR (d->pair, d->new_val);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
SCM_SETCDR (d->pair, d->new_val);
|
SCM_SETCDR (d->pair, d->new_val);
|
||||||
SCM_I_REGISTER_DISAPPEARING_LINK ((void *) SCM_CDRLOC (d->pair),
|
SCM_I_REGISTER_DISAPPEARING_LINK ((GC_PTR) SCM_CDRLOC (d->pair),
|
||||||
SCM2PTR (d->new_val));
|
(GC_PTR) SCM2PTR (d->new_val));
|
||||||
}
|
}
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
|
@ -278,7 +278,8 @@ scm_c_vector_set_x (SCM v, size_t k, SCM obj)
|
||||||
{
|
{
|
||||||
/* Make it a weak pointer. */
|
/* Make it a weak pointer. */
|
||||||
GC_PTR link = (GC_PTR) & ((SCM_I_VECTOR_WELTS (v))[k]);
|
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)
|
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. */
|
/* Make it a weak pointer. */
|
||||||
GC_PTR link = (GC_PTR) & ((SCM_I_VECTOR_WELTS (vv))[k]);
|
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
|
else
|
||||||
|
|
|
@ -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
|
* This library is free software; you can redistribute it and/or
|
||||||
* modify it under the terms of the GNU Lesser General Public License
|
* 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;
|
cell->word_1 = cdr;
|
||||||
|
|
||||||
if (SCM_NIMP (car))
|
if (SCM_NIMP (car))
|
||||||
{
|
/* Weak car cells make sense iff the car is non-immediate. */
|
||||||
/* Weak car cells make sense iff the car is non-immediate. */
|
SCM_I_REGISTER_DISAPPEARING_LINK ((GC_PTR) &cell->word_0,
|
||||||
SCM_I_REGISTER_DISAPPEARING_LINK ((GC_PTR) &cell->word_0,
|
(GC_PTR) SCM2PTR (car));
|
||||||
(GC_PTR) SCM_UNPACK (car));
|
|
||||||
}
|
|
||||||
|
|
||||||
return (SCM_PACK (cell));
|
return (SCM_PACK (cell));
|
||||||
}
|
}
|
||||||
|
@ -83,11 +81,9 @@ scm_weak_cdr_pair (SCM car, SCM cdr)
|
||||||
cell->word_1 = cdr;
|
cell->word_1 = cdr;
|
||||||
|
|
||||||
if (SCM_NIMP (cdr))
|
if (SCM_NIMP (cdr))
|
||||||
{
|
/* Weak cdr cells make sense iff the cdr is non-immediate. */
|
||||||
/* Weak cdr cells make sense iff the cdr is non-immediate. */
|
SCM_I_REGISTER_DISAPPEARING_LINK ((GC_PTR) &cell->word_1,
|
||||||
SCM_I_REGISTER_DISAPPEARING_LINK ((GC_PTR) &cell->word_1,
|
(GC_PTR) SCM2PTR (cdr));
|
||||||
(GC_PTR) SCM_UNPACK (cdr));
|
|
||||||
}
|
|
||||||
|
|
||||||
return (SCM_PACK (cell));
|
return (SCM_PACK (cell));
|
||||||
}
|
}
|
||||||
|
@ -103,15 +99,11 @@ scm_doubly_weak_pair (SCM car, SCM cdr)
|
||||||
cell->word_1 = cdr;
|
cell->word_1 = cdr;
|
||||||
|
|
||||||
if (SCM_NIMP (car))
|
if (SCM_NIMP (car))
|
||||||
{
|
SCM_I_REGISTER_DISAPPEARING_LINK ((GC_PTR) &cell->word_0,
|
||||||
SCM_I_REGISTER_DISAPPEARING_LINK ((GC_PTR) &cell->word_0,
|
(GC_PTR) SCM2PTR (car));
|
||||||
(GC_PTR) SCM_UNPACK (car));
|
|
||||||
}
|
|
||||||
if (SCM_NIMP (cdr))
|
if (SCM_NIMP (cdr))
|
||||||
{
|
SCM_I_REGISTER_DISAPPEARING_LINK ((GC_PTR) &cell->word_1,
|
||||||
SCM_I_REGISTER_DISAPPEARING_LINK ((GC_PTR) &cell->word_1,
|
(GC_PTR) SCM2PTR (cdr));
|
||||||
(GC_PTR) SCM_UNPACK (cdr));
|
|
||||||
}
|
|
||||||
|
|
||||||
return (SCM_PACK (cell));
|
return (SCM_PACK (cell));
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue