Index: termios.c =================================================================== RCS file: /usr/local/cvsroot/rxtx-devel/src/termios.c,v retrieving revision 1.9.2.57 diff -u -r1.9.2.57 termios.c --- termios.c 4 Jun 2006 02:50:01 -0000 1.9.2.57 +++ termios.c 11 Jun 2006 22:17:48 -0000 @@ -1048,26 +1048,29 @@ if ( !first_tl ) { port->prev = NULL; + port->next = NULL; first_tl = port; } else { - while ( index->next ) + while ( ( index->fd < port->fd ) && index->next ) index = index->next; - if ( port == first_tl ) + if ( index->fd > port->fd ) { - port->prev = NULL; - port->next = first_tl; - first_tl->prev = port; - first_tl = port; + /* inserting previously closed fd */ + port->prev = index->prev; + port->next=index; + index->prev->next = port; + index->prev = port; } else { + /* adding to end of list */ port->prev = index; + port->next = NULL; index->next = port; } } - port->next = NULL; LEAVE( "add_port" ); return port;