Module: wine Branch: refs/heads/master Commit: 7ef5c3c7726ceda64a59a88fc28901407185e97d URL: http://source.winehq.org/git/?p=wine.git;a=commit;h=7ef5c3c7726ceda64a59a88f...
Author: Robert Shearman rob@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);