[prev in list] [next in list] [prev in thread] [next in thread] 

List:       wine-patches
Subject:    rpcrt4: Raise an exception if IRpcChannelBuffer_GetBuffer fails.
From:       Robert Shearman <rob () codeweavers ! com>
Date:       2006-08-31 16:14:34
Message-ID: 44F70AEA.6030604 () codeweavers ! com
[Download RAW message or body]

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(-)

["f72e11534321a9606ffa4a79f0434d7ac53a1373.diff" (text/x-patch)]

diff --git a/dlls/rpcrt4/cproxy.c b/dlls/rpcrt4/cproxy.c
index 4c83d09..404b19c 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;





[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic