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