Dmitry Timoshkov : rpcrt4: Return an exception code from NdrAsyncClientCall.

Alexandre Julliard julliard at winehq.org
Mon Sep 2 14:50:20 CDT 2019


Module: wine
Branch: master
Commit: 0c2f5f8b15a4f7bb7008c3efb12b4cd3c774a3a1
URL:    https://source.winehq.org/git/wine.git/?a=commit;h=0c2f5f8b15a4f7bb7008c3efb12b4cd3c774a3a1

Author: Dmitry Timoshkov <dmitry at baikal.ru>
Date:   Mon Sep  2 15:45:42 2019 +0800

rpcrt4: Return an exception code from NdrAsyncClientCall.

Otherwise the caller may decide to wait for the call termination which
will never happen.

Signed-off-by: Dmitry Timoshkov <dmitry at baikal.ru>
Signed-off-by: Alexandre Julliard <julliard at winehq.org>

---

 dlls/rpcrt4/ndr_stubless.c | 6 ++++--
 1 file changed, 4 insertions(+), 2 deletions(-)

diff --git a/dlls/rpcrt4/ndr_stubless.c b/dlls/rpcrt4/ndr_stubless.c
index de58a9f..9053751 100644
--- a/dlls/rpcrt4/ndr_stubless.c
+++ b/dlls/rpcrt4/ndr_stubless.c
@@ -1773,6 +1773,7 @@ static void do_ndr_async_client_call( const MIDL_STUB_DESC *pStubDesc, PFORMAT_S
 LONG_PTR CDECL DECLSPEC_HIDDEN ndr_async_client_call( PMIDL_STUB_DESC pStubDesc, PFORMAT_STRING pFormat,
                                                       void **stack_top )
 {
+    LONG_PTR ret = 0;
     const NDR_PROC_HEADER *pProcHeader = (const NDR_PROC_HEADER *)&pFormat[0];
 
     TRACE("pStubDesc %p, pFormat %p, ...\n", pStubDesc, pFormat);
@@ -1786,14 +1787,15 @@ LONG_PTR CDECL DECLSPEC_HIDDEN ndr_async_client_call( PMIDL_STUB_DESC pStubDesc,
         __EXCEPT_ALL
         {
             FIXME("exception %x during ndr_async_client_call()\n", GetExceptionCode());
+            ret = GetExceptionCode();
         }
         __ENDTRY
     }
     else
         do_ndr_async_client_call( pStubDesc, pFormat, stack_top);
 
-    TRACE("returning 0\n");
-    return 0;
+    TRACE("returning %ld\n", ret);
+    return ret;
 }
 
 RPC_STATUS NdrpCompleteAsyncClientCall(RPC_ASYNC_STATE *pAsync, void *Reply)




More information about the wine-cvs mailing list