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