correct use of SCM2PTR in SCM_I_REGISTER_DISAPPEARING_LINK forms
authorAndy Wingo <wingo@pobox.com>
Fri, 13 May 2011 11:18:11 +0000 (13:18 +0200)
committerAndy Wingo <wingo@pobox.com>
Fri, 13 May 2011 13:29:26 +0000 (15:29 +0200)
* 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.

libguile/hashtab.c
libguile/vectors.c
libguile/weaks.c

index 894fbf7..61d744a 100644 (file)
@@ -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;
 }
index 1cf8f2f..2805278 100644 (file)
@@ -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
index 1d5fcf4..92d351e 100644 (file)
@@ -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));
 }