Changes from arch/CVS synchronization
authorLudovic Courtès <ludo@gnu.org>
Sat, 27 Oct 2007 15:15:23 +0000 (15:15 +0000)
committerLudovic Courtès <ludo@gnu.org>
Sat, 27 Oct 2007 15:15:23 +0000 (15:15 +0000)
libguile/ChangeLog
libguile/fports.c

index 854a365..d59bc98 100644 (file)
@@ -1,3 +1,9 @@
+2007-10-27  Ludovic Courtès  <ludo@gnu.org>
+
+       * fports.c (scm_i_evict_port): Expect a port, rather than a pair
+       containing the port.  Fixes a bug in the new port table (2007-08-26).
+       (scm_evict_ports): Use `scm_c_port_for_each ()'.
+
 2007-10-21  Neil Jerram  <neil@ossau.uklinux.net>
 
        * eval.c (unmemoize_delay): Extend the environment before
index 7819fda..20902d6 100644 (file)
@@ -1,4 +1,4 @@
-/* Copyright (C) 1995,1996,1997,1998,1999,2000,2001, 2002, 2003, 2004, 2006 Free Software Foundation, Inc.
+/* Copyright (C) 1995,1996,1997,1998,1999,2000,2001, 2002, 2003, 2004, 2006, 2007 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
@@ -221,11 +221,10 @@ SCM_DEFINE (scm_setvbuf, "setvbuf", 2, 1, 0,
 /* Move ports with the specified file descriptor to new descriptors,
  * resetting the revealed count to 0.
  */
-static SCM
-scm_i_evict_port (SCM handle, void *closure)
+static void
+scm_i_evict_port (void *closure, SCM port)
 {
   int fd = * (int*) closure;
-  SCM port = SCM_CAR (handle);
 
   if (SCM_FPORTP (port))
     {
@@ -239,18 +238,12 @@ scm_i_evict_port (SCM handle, void *closure)
          scm_set_port_revealed_x (port, scm_from_int (0));
        }
     }
-
-  return handle;
 }
 
 void
 scm_evict_ports (int fd)
 {
-  scm_i_scm_pthread_mutex_lock (&scm_i_port_table_mutex);
-  scm_internal_hash_for_each_handle (&scm_i_evict_port,
-                                    (void*) &fd,
-                                    scm_i_port_weak_hash);
-  scm_i_pthread_mutex_unlock (&scm_i_port_table_mutex);
+  scm_c_port_for_each (scm_i_evict_port, (void *) &fd);
 }