Robert Shearman : rpcrt4:
Implement full-pointer support for interpreted stubs.
Alexandre Julliard
julliard at wine.codeweavers.com
Thu Jun 8 05:06:02 CDT 2006
Module: wine
Branch: refs/heads/master
Commit: 7ef5c3c7726ceda64a59a88fc28901407185e97d
URL: http://source.winehq.org/git/?p=wine.git;a=commit;h=7ef5c3c7726ceda64a59a88fc28901407185e97d
Author: Robert Shearman <rob at codeweavers.com>
Date: Wed Jun 7 20:11:36 2006 +0100
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.
---
dlls/rpcrt4/ndr_stubless.c | 30 ++++++++----------------------
1 files changed, 8 insertions(+), 22 deletions(-)
diff --git a/dlls/rpcrt4/ndr_stubless.c b/dlls/rpcrt4/ndr_stubless.c
index 1f1e2e1..0053fa4 100644
--- a/dlls/rpcrt4/ndr_stubless.c
+++ b/dlls/rpcrt4/ndr_stubless.c
@@ -571,6 +571,10 @@ LONG_PTR WINAPIV NdrClientCall2(PMIDL_ST
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 @@ #endif
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 @@ #endif
}
}
- /* FIXME: unbind the binding handle */
-
if (ext_flags.HasNewCorrDesc)
{
/* free extra correlation package */
@@ -948,11 +942,9 @@ #endif
/* 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 @@ #endif
/* 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);
More information about the wine-cvs
mailing list