From 5532927ed33f3682c48bdc2a2528488eeefa5bad Mon Sep 17 00:00:00 2001 From: Alexandre Julliard Date: Sun, 16 May 2010 12:34:28 +0200 Subject: [PATCH] server: Make sure a thread doesn't get freed while it's processing a request. --- server/thread.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/server/thread.c b/server/thread.c index c4deb68df62..67ef6cfce82 100644 --- a/server/thread.c +++ b/server/thread.c @@ -248,9 +248,11 @@ static void thread_poll_event( struct fd *fd, int event ) struct thread *thread = get_fd_user( fd ); assert( thread->obj.ops == &thread_ops ); + grab_object( thread ); if (event & (POLLERR | POLLHUP)) kill_thread( thread, 0 ); else if (event & POLLIN) read_request( thread ); else if (event & POLLOUT) write_reply( thread ); + release_object( thread ); } /* cleanup everything that is no longer needed by a dead thread */ -- 2.11.4.GIT