From: Ludovic Courtès Date: Sat, 27 Oct 2007 15:15:23 +0000 (+0000) Subject: Changes from arch/CVS synchronization X-Git-Url: http://git.hcoop.net/bpt/guile.git/commitdiff_plain/ee834df41f1ce712ed6061bc93e394fca9ecc6b6 Changes from arch/CVS synchronization --- diff --git a/libguile/ChangeLog b/libguile/ChangeLog index 854a3651f..d59bc98ec 100644 --- a/libguile/ChangeLog +++ b/libguile/ChangeLog @@ -1,3 +1,9 @@ +2007-10-27 Ludovic Courtès + + * 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 * eval.c (unmemoize_delay): Extend the environment before diff --git a/libguile/fports.c b/libguile/fports.c index 7819fda3e..20902d698 100644 --- a/libguile/fports.c +++ b/libguile/fports.c @@ -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); }