From ab5ca5c04829642fbf1cff1a6c530e6fe1afd313 Mon Sep 17 00:00:00 2001
From: Alexandre Julliard <julliard@winehq.org>
Date: Tue, 24 Jan 2006 13:31:48 +0100
Subject: [PATCH] server: Use the new set_fd_user function in create_serial().

---
 server/serial.c | 18 +++++-------------
 1 file changed, 5 insertions(+), 13 deletions(-)

diff --git a/server/serial.c b/server/serial.c
index 08a64a04d6b..42d274fec97 100644
--- a/server/serial.c
+++ b/server/serial.c
@@ -131,19 +131,14 @@ int is_serial_fd( struct fd *fd )
 struct object *create_serial( struct fd *fd, unsigned int options )
 {
     struct serial *serial;
-    int unix_fd;
-
-    if ((unix_fd = dup( get_unix_fd(fd) )) == -1) return NULL;
+    int unix_fd = get_unix_fd( fd );
 
     /* set the fd back to blocking if necessary */
     if (options & (FILE_SYNCHRONOUS_IO_ALERT | FILE_SYNCHRONOUS_IO_NONALERT))
         fcntl( unix_fd, F_SETFL, 0 );
 
-    if (!(serial = alloc_object( &serial_ops )))
-    {
-        close( unix_fd );
-        return NULL;
-    }
+    if (!(serial = alloc_object( &serial_ops ))) return NULL;
+
     serial->options      = options;
     serial->readinterval = 0;
     serial->readmult     = 0;
@@ -155,11 +150,8 @@ struct object *create_serial( struct fd *fd, unsigned int options )
     list_init( &serial->read_q );
     list_init( &serial->write_q );
     list_init( &serial->wait_q );
-    if (!(serial->fd = create_anonymous_fd( &serial_fd_ops, unix_fd, &serial->obj )))
-    {
-        release_object( serial );
-        return NULL;
-    }
+    serial->fd = (struct fd *)grab_object( fd );
+    set_fd_user( fd, &serial_fd_ops, &serial->obj );
     return &serial->obj;
 }
 
-- 
GitLab