Commit 7ef5c3c7 authored by Robert Shearman's avatar Robert Shearman Committed by Alexandre Julliard

rpcrt4: Implement full-pointer support for interpreted stubs.

Move the calls to the full pointer init functions before NdrClient/ServerInitializeNew, like in MIDL-generated code.
parent 5eaf49f8
......@@ -571,6 +571,10 @@ LONG_PTR WINAPIV NdrClientCall2(PMIDL_STUB_DESC pStubDesc, PFORMAT_STRING pForma
pFormat += sizeof(NDR_PROC_HEADER);
}
/* create the full pointer translation tables, if requested */
if (pProcHeader->Oi_flags & RPC_FC_PROC_OIF_FULLPTR)
stubMsg.FullPtrXlatTables = NdrFullPointerXlatInit(0,XLAT_CLIENT);
if (pProcHeader->Oi_flags & RPC_FC_PROC_OIF_OBJECT)
{
/* object is always the first argument */
......@@ -622,14 +626,6 @@ LONG_PTR WINAPIV NdrClientCall2(PMIDL_STUB_DESC pStubDesc, PFORMAT_STRING pForma
pFormat += pExtensions->Size;
}
/* create the full pointer translation tables, if requested */
if (pProcHeader->Oi_flags & RPC_FC_PROC_OIF_FULLPTR)
#if 0
stubMsg.FullPtrXlatTables = NdrFullPointerXlatInit(0,XLAT_CLIENT);
#else
FIXME("initialize full pointer translation tables\n");
#endif
stubMsg.BufferLength = 0;
/* store the RPC flags away */
......@@ -935,8 +931,6 @@ LONG_PTR WINAPIV NdrClientCall2(PMIDL_STUB_DESC pStubDesc, PFORMAT_STRING pForma
}
}
/* FIXME: unbind the binding handle */
if (ext_flags.HasNewCorrDesc)
{
/* free extra correlation package */
......@@ -948,11 +942,9 @@ LONG_PTR WINAPIV NdrClientCall2(PMIDL_STUB_DESC pStubDesc, PFORMAT_STRING pForma
/* NdrPipesDone(...) */
}
#if 0
/* free the full pointer translation tables */
if (pProcHeader->Oi_flags & RPC_FC_PROC_OIF_FULLPTR)
NdrFullPointerXlatFree(stubMsg.FullPtrXlatTables);
#endif
/* free marshalling buffer */
if (pProcHeader->Oi_flags & RPC_FC_PROC_OIF_OBJECT)
......@@ -1083,6 +1075,10 @@ long WINAPI NdrStubCall2(
RpcRaiseException(RPC_X_WRONG_STUB_VERSION);
}
/* create the full pointer translation tables, if requested */
if (pProcHeader->Oi_flags & RPC_FC_PROC_OIF_FULLPTR)
stubMsg.FullPtrXlatTables = NdrFullPointerXlatInit(0,XLAT_SERVER);
if (pProcHeader->Oi_flags & RPC_FC_PROC_OIF_RPCFLAGS)
{
NDR_PROC_HEADER_RPC * pProcHeader = (NDR_PROC_HEADER_RPC *)&pFormat[0];
......@@ -1157,14 +1153,6 @@ long WINAPI NdrStubCall2(
else
NdrServerInitializeNew(pRpcMsg, &stubMsg, pStubDesc);
/* create the full pointer translation tables, if requested */
if (pProcHeader->Oi_flags & RPC_FC_PROC_OIF_FULLPTR)
#if 0
stubMsg.FullPtrXlatTables = NdrFullPointerXlatInit(0,XLAT_SERVER);
#else
FIXME("initialize full pointer translation tables\n");
#endif
/* store the RPC flags away */
if (pProcHeader->Oi_flags & RPC_FC_PROC_OIF_RPCFLAGS)
pRpcMsg->RpcFlags = ((NDR_PROC_HEADER_RPC *)pProcHeader)->rpc_flags;
......@@ -1505,11 +1493,9 @@ long WINAPI NdrStubCall2(
/* NdrPipesDone(...) */
}
#if 0
/* free the full pointer translation tables */
if (pProcHeader->Oi_flags & RPC_FC_PROC_OIF_FULLPTR)
NdrFullPointerXlatFree(stubMsg.FullPtrXlatTables);
#endif
/* free server function stack */
HeapFree(GetProcessHeap(), 0, args);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment