Mike McCormack : server: Make sure to release the fd we grabbed in all cases.

Alexandre Julliard julliard at wine.codeweavers.com
Tue Jan 17 06:37:12 CST 2006


Module: wine
Branch: refs/heads/master
Commit: 213e01e606bc0434059fced84b2bcf349e622bcc
URL:    http://source.winehq.org/git/?p=wine.git;a=commit;h=213e01e606bc0434059fced84b2bcf349e622bcc

Author: Mike McCormack <mike at codeweavers.com>
Date:   Tue Jan 17 13:13:14 2006 +0100

server: Make sure to release the fd we grabbed in all cases.

---

 server/fd.c |   25 ++++++++++++++++---------
 1 files changed, 16 insertions(+), 9 deletions(-)

diff --git a/server/fd.c b/server/fd.c
index 90fb7af..37e0ef2 100644
--- a/server/fd.c
+++ b/server/fd.c
@@ -1505,16 +1505,23 @@ int default_fd_signaled( struct object *
     int events, ret;
     struct fd *fd = get_obj_fd( obj );
 
-    if (fd->inode) return 1;  /* regular files are always signaled */
-
-    events = fd->fd_ops->get_poll_events( fd );
-    ret = check_fd_events( fd, events ) != 0;
-
-    if (ret)
-        set_fd_events( fd, 0 ); /* stop waiting on select() if we are signaled */
-    else if (!list_empty( &obj->wait_queue ))
-        set_fd_events( fd, events ); /* restart waiting on poll() if we are no longer signaled */
+    if (fd->inode) ret = 1; /* regular files are always signaled */
+    else
+    {
+        events = fd->fd_ops->get_poll_events( fd );
+        ret = check_fd_events( fd, events ) != 0;
 
+        if (ret)
+        {
+            /* stop waiting on select() if we are signaled */
+            set_fd_events( fd, 0 );
+        }
+        else if (!list_empty( &obj->wait_queue ))
+        {
+            /* restart waiting on poll() if we are no longer signaled */
+            set_fd_events( fd, events );
+        }
+    }
     release_object( fd );
     return ret;
 }




More information about the wine-cvs mailing list