Robert Shearman : rpcrt4: Raise an exception if IRpcChannelBuffer_GetBuffer fails.

Alexandre Julliard julliard at wine.codeweavers.com
Thu Sep 7 05:07:11 CDT 2006


Module: wine
Branch: master
Commit: a6e545a27ce0acfb5f5db325fbd445ee9e27ae38
URL:    http://source.winehq.org/git/?p=wine.git;a=commit;h=a6e545a27ce0acfb5f5db325fbd445ee9e27ae38

Author: Robert Shearman <rob at codeweavers.com>
Date:   Thu Aug 31 17:14:34 2006 +0100

rpcrt4: Raise an exception if IRpcChannelBuffer_GetBuffer fails.

Make StdProxy_GetIID and StdProxy_GetChannel return void.
Don't bother checking for This and pRpcChannelBuffer being NULL as 
native doesn't.

---

 dlls/rpcrt4/cproxy.c |   25 ++++++++++++-------------
 1 files changed, 12 insertions(+), 13 deletions(-)

diff --git a/dlls/rpcrt4/cproxy.c b/dlls/rpcrt4/cproxy.c
index 280dbe1..da5deb9 100644
--- a/dlls/rpcrt4/cproxy.c
+++ b/dlls/rpcrt4/cproxy.c
@@ -284,24 +284,22 @@ static const IRpcProxyBufferVtbl StdProx
   StdProxy_Disconnect
 };
 
-static HRESULT StdProxy_GetChannel(LPVOID iface,
+static void StdProxy_GetChannel(LPVOID iface,
                                    LPRPCCHANNELBUFFER *ppChannel)
 {
   ICOM_THIS_MULTI(StdProxyImpl,PVtbl,iface);
   TRACE("(%p)->GetChannel(%p) %s\n",This,ppChannel,This->name);
 
   *ppChannel = This->pChannel;
-  return S_OK;
 }
 
-static HRESULT StdProxy_GetIID(LPVOID iface,
+static void StdProxy_GetIID(LPVOID iface,
                                const IID **ppiid)
 {
   ICOM_THIS_MULTI(StdProxyImpl,PVtbl,iface);
   TRACE("(%p)->GetIID(%p) %s\n",This,ppiid,This->name);
 
   *ppiid = This->piid;
-  return S_OK;
 }
 
 HRESULT WINAPI IUnknown_QueryInterface_Proxy(LPUNKNOWN iface,
@@ -336,16 +334,12 @@ void WINAPI NdrProxyInitialize(void *Thi
                               PMIDL_STUB_DESC pStubDescriptor,
                               unsigned int ProcNum)
 {
-  HRESULT hr;
-
   TRACE("(%p,%p,%p,%p,%d)\n", This, pRpcMsg, pStubMsg, pStubDescriptor, ProcNum);
   NdrClientInitializeNew(pRpcMsg, pStubMsg, pStubDescriptor, ProcNum);
-  if (This) StdProxy_GetChannel(This, &pStubMsg->pRpcChannelBuffer);
-  if (pStubMsg->pRpcChannelBuffer) {
-    hr = IRpcChannelBuffer_GetDestCtx(pStubMsg->pRpcChannelBuffer,
-                                     &pStubMsg->dwDestContext,
-                                     &pStubMsg->pvDestContext);
-  }
+  StdProxy_GetChannel(This, &pStubMsg->pRpcChannelBuffer);
+  IRpcChannelBuffer_GetDestCtx(pStubMsg->pRpcChannelBuffer,
+                               &pStubMsg->dwDestContext,
+                               &pStubMsg->pvDestContext);
   TRACE("channel=%p\n", pStubMsg->pRpcChannelBuffer);
 }
 
@@ -361,10 +355,15 @@ void WINAPI NdrProxyGetBuffer(void *This
   TRACE("(%p,%p)\n", This, pStubMsg);
   pStubMsg->RpcMsg->BufferLength = pStubMsg->BufferLength;
   pStubMsg->dwStubPhase = PROXY_GETBUFFER;
-  hr = StdProxy_GetIID(This, &riid);
+  StdProxy_GetIID(This, &riid);
   hr = IRpcChannelBuffer_GetBuffer(pStubMsg->pRpcChannelBuffer,
                                   (RPCOLEMESSAGE*)pStubMsg->RpcMsg,
                                   riid);
+  if (FAILED(hr))
+  {
+    RpcRaiseException(hr);
+    return;
+  }
   pStubMsg->BufferStart = pStubMsg->RpcMsg->Buffer;
   pStubMsg->BufferEnd = pStubMsg->BufferStart + pStubMsg->BufferLength;
   pStubMsg->Buffer = pStubMsg->BufferStart;




More information about the wine-cvs mailing list