fix compiler warnings in foreign.c
authorAndy Wingo <wingo@pobox.com>
Thu, 7 Jan 2010 09:40:38 +0000 (10:40 +0100)
committerAndy Wingo <wingo@pobox.com>
Thu, 7 Jan 2010 09:40:38 +0000 (10:40 +0100)
* libguile/foreign.c (scm_c_from_foreign, scm_c_take_foreign): Fix
  compiler warnings on 64-bit machines.

libguile/foreign.c

index cdf58b3b864ccb4367ebb4b1d237785d14276416..4a4b2181a11477c0c2c2db954f7ace2c67a04c11 100644 (file)
@@ -60,58 +60,59 @@ SCM
 scm_c_from_foreign (scm_t_foreign_type type, void *val, size_t size,
                     scm_t_foreign_finalizer finalizer)
 {
-  void *ret;
+  SCM ret;
   if (!size)
     size = sizeof_type (type);
     
-  ret = scm_gc_malloc_pointerless (sizeof (scm_t_bits) * 2 + size, "foreign");
-  SCM_SET_CELL_WORD_0 (PTR2SCM (ret), scm_tc7_foreign | (type<<8));
+  ret = PTR2SCM (scm_gc_malloc_pointerless (sizeof (scm_t_bits) * 2 + size,
+                                            "foreign"));
+  SCM_SET_CELL_WORD_0 (ret, (scm_t_bits)(scm_tc7_foreign | (type<<8)));
 
   /* set SCM_FOREIGN_OBJECT to point to the third word of the object, which will
      be 8-byte aligned. Then copy *val into that space. */
-  SCM_SET_CELL_WORD_1 (PTR2SCM (ret),
-                       (scm_t_bits)SCM_CELL_OBJECT_LOC (PTR2SCM (ret), 2));
-  memcpy (SCM_FOREIGN_OBJECT (PTR2SCM (ret), void), val, size);
+  SCM_SET_CELL_WORD_1 (ret, (scm_t_bits)SCM_CELL_OBJECT_LOC (ret, 2));
+  memcpy (SCM_FOREIGN_OBJECT (ret, void), val, size);
 
   if (finalizer)
     {
       /* Register a finalizer for the newly created instance.  */
       GC_finalization_proc prev_finalizer;
       GC_PTR prev_finalizer_data;
-      GC_REGISTER_FINALIZER_NO_ORDER (ret,
+      GC_REGISTER_FINALIZER_NO_ORDER (SCM2PTR (ret),
                                       foreign_finalizer_trampoline,
                                       finalizer,
                                       &prev_finalizer,
                                       &prev_finalizer_data);
     }
 
-  return PTR2SCM (ret);
+  return ret;
 }
 
 SCM
 scm_c_take_foreign (scm_t_foreign_type type, void *val,
                     scm_t_foreign_finalizer finalizer)
 {
-  void *ret;
+  SCM ret;
     
-  ret = scm_gc_malloc_pointerless (sizeof (scm_t_bits) * 2, "foreign");
-  SCM_SET_CELL_WORD_0 (PTR2SCM (ret), scm_tc7_foreign | (type<<8));
+  ret = PTR2SCM (scm_gc_malloc_pointerless (sizeof (scm_t_bits) * 2,
+                                            "foreign"));
+  SCM_SET_CELL_WORD_0 (ret, (scm_t_bits)(scm_tc7_foreign | (type<<8)));
   /* Set SCM_FOREIGN_OBJECT to the given pointer. */
-  SCM_SET_CELL_WORD_1 (PTR2SCM (ret), (scm_t_bits)val);
+  SCM_SET_CELL_WORD_1 (ret, (scm_t_bits)val);
 
   if (finalizer)
     {
       /* Register a finalizer for the newly created instance.  */
       GC_finalization_proc prev_finalizer;
       GC_PTR prev_finalizer_data;
-      GC_REGISTER_FINALIZER_NO_ORDER (ret,
+      GC_REGISTER_FINALIZER_NO_ORDER (SCM2PTR (ret),
                                       foreign_finalizer_trampoline,
                                       finalizer,
                                       &prev_finalizer,
                                       &prev_finalizer_data);
     }
 
-  return PTR2SCM (ret);
+  return ret;
 }
 
 SCM_DEFINE (scm_foreign_ref, "foreign-ref", 1, 0, 0,