Rob Shearman : rpcrt4: Hold the thread-data' s critical section while cancelling a call.
Module: wine Branch: master Commit: 8a15423ab7db1826f888759507801c04e36094b4 URL: http://source.winehq.org/git/wine.git/?a=commit;h=8a15423ab7db1826f888759507... Author: Rob Shearman <rob(a)codeweavers.com> Date: Sun Nov 18 15:51:03 2007 +0000 rpcrt4: Hold the thread-data's critical section while cancelling a call. Check that there is a connection before trying to cancel it. --- dlls/rpcrt4/rpcrt4_main.c | 4 +++- 1 files changed, 3 insertions(+), 1 deletions(-) diff --git a/dlls/rpcrt4/rpcrt4_main.c b/dlls/rpcrt4/rpcrt4_main.c index ac69d5b..d557664 100644 --- a/dlls/rpcrt4/rpcrt4_main.c +++ b/dlls/rpcrt4/rpcrt4_main.c @@ -926,7 +926,9 @@ RPC_STATUS RPC_ENTRY RpcCancelThread(void* ThreadHandle) LIST_FOR_EACH_ENTRY(tdata, &threaddata_list, struct threaddata, entry) if (tdata->thread_id == target_tid) { - rpcrt4_conn_cancel_call(tdata->connection); + EnterCriticalSection(&tdata->cs); + if (tdata->connection) rpcrt4_conn_cancel_call(tdata->connection); + LeaveCriticalSection(&tdata->cs); break; } LeaveCriticalSection(&threaddata_cs);
participants (1)
-
Alexandre Julliard