Robert Shearman : rpcrt4:
Move the initialising of the stub message structure nearer to the top
of NdrClientCall2 .
Alexandre Julliard
julliard at wine.codeweavers.com
Thu May 25 04:16:06 CDT 2006
Module: wine
Branch: refs/heads/master
Commit: fdda17deea1777303d1ce74873f0ea98e56e662a
URL: http://source.winehq.org/git/?p=wine.git;a=commit;h=fdda17deea1777303d1ce74873f0ea98e56e662a
Author: Robert Shearman <rob at codeweavers.com>
Date: Wed May 24 23:03:18 2006 +0100
rpcrt4: Move the initialising of the stub message structure nearer to the top of NdrClientCall2.
Set stubMsg.StackTop after calling the initialise function.
---
dlls/rpcrt4/ndr_stubless.c | 32 ++++++++++++++++----------------
1 files changed, 16 insertions(+), 16 deletions(-)
diff --git a/dlls/rpcrt4/ndr_stubless.c b/dlls/rpcrt4/ndr_stubless.c
index 15b045d..1997361 100644
--- a/dlls/rpcrt4/ndr_stubless.c
+++ b/dlls/rpcrt4/ndr_stubless.c
@@ -410,13 +410,6 @@ LONG_PTR WINAPIV NdrClientCall2(PMIDL_ST
TRACE("pStubDesc %p, pFormat %p, ...\n", pStubDesc, pFormat);
- /* needed for conformance of top-level objects */
-#ifdef __i386__
- stubMsg.StackTop = *(unsigned char **)(&pFormat+1);
-#else
-# warning Stack not retrieved for your CPU architecture
-#endif
-
/* Later NDR language versions probably won't be backwards compatible */
if (pStubDesc->Version > 0x50002)
{
@@ -439,9 +432,25 @@ #endif
current_offset = sizeof(NDR_PROC_HEADER);
}
+ if (pProcHeader->Oi_flags & RPC_FC_PROC_OIF_OBJECT)
+ {
+ /* object is always the first argument */
+ This = *(void **)ARG_FROM_OFFSET(stubMsg, 0);
+ NdrProxyInitialize(This, &rpcMsg, &stubMsg, pStubDesc, procedure_number);
+ }
+ else
+ NdrClientInitializeNew(&rpcMsg, &stubMsg, pStubDesc, procedure_number);
+
TRACE("Oi_flags = 0x%02x\n", pProcHeader->Oi_flags);
TRACE("MIDL stub version = 0x%lx\n", pStubDesc->MIDLVersion);
+ /* needed for conformance of top-level objects */
+#ifdef __i386__
+ stubMsg.StackTop = *(unsigned char **)(&pFormat+1);
+#else
+# warning Stack not retrieved for your CPU architecture
+#endif
+
/* we only need a handle if this isn't an object method */
if (!(pProcHeader->Oi_flags & RPC_FC_PROC_OIF_OBJECT))
{
@@ -547,15 +556,6 @@ #endif
current_offset += pExtensions->Size;
}
- if (pProcHeader->Oi_flags & RPC_FC_PROC_OIF_OBJECT)
- {
- /* object is always the first argument */
- This = *(void **)ARG_FROM_OFFSET(stubMsg, 0);
- NdrProxyInitialize(This, &rpcMsg, &stubMsg, pStubDesc, procedure_number);
- }
- else
- NdrClientInitializeNew(&rpcMsg, &stubMsg, pStubDesc, procedure_number);
-
/* create the full pointer translation tables, if requested */
if (pProcHeader->Oi_flags & RPC_FC_PROC_OIF_FULLPTR)
#if 0
More information about the wine-cvs
mailing list