[PATCH 2/2] server: Avoid touching the poll_req structure after calling async_request_complete() (Valgrind).

Zebediah Figura zfigura at codeweavers.com
Tue Oct 12 19:36:55 CDT 2021


Fixes: 567beb6b2edba07051a75d45a9b2f1516568c0e7
Signed-off-by: Zebediah Figura <zfigura at codeweavers.com>
---
 server/sock.c | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/server/sock.c b/server/sock.c
index 42f73e52fa2..cebed94aec4 100644
--- a/server/sock.c
+++ b/server/sock.c
@@ -839,6 +839,7 @@ static int get_poll_flags( struct sock *sock, int event )
 
 static void complete_async_poll( struct poll_req *req, unsigned int status )
 {
+    struct poll_socket_output *output = req->output;
     unsigned int i;
 
     for (i = 0; i < req->count; ++i)
@@ -850,8 +851,8 @@ static void complete_async_poll( struct poll_req *req, unsigned int status )
     }
 
     /* pass 0 as result; client will set actual result size */
-    async_request_complete( req->async, status, 0, req->count * sizeof(*req->output), req->output );
     req->output = NULL;
+    async_request_complete( req->async, status, 0, req->count * sizeof(*output), output );
 }
 
 static void complete_async_polls( struct sock *sock, int event, int error )
-- 
2.33.0




More information about the wine-devel mailing list