[PATCH 5/5] rpcrt4: Procedures containing a range within a conformance have a larger correlation descriptor.

Huw Davies huw at codeweavers.com
Mon Jul 13 07:11:39 CDT 2015


---
 dlls/rpcrt4/ndr_stubless.c | 6 ++++++
 include/ndrtypes.h         | 6 +++++-
 2 files changed, 11 insertions(+), 1 deletion(-)

diff --git a/dlls/rpcrt4/ndr_stubless.c b/dlls/rpcrt4/ndr_stubless.c
index 3106d47..dbdf873 100644
--- a/dlls/rpcrt4/ndr_stubless.c
+++ b/dlls/rpcrt4/ndr_stubless.c
@@ -736,6 +736,8 @@ LONG_PTR CDECL ndr_client_call( PMIDL_STUB_DESC pStubDesc, PFORMAT_STRING pForma
     {
         /* initialize extra correlation package */
         NdrCorrelationInitialize(&stubMsg, NdrCorrCache, sizeof(NdrCorrCache), 0);
+        if (ext_flags.Unused & 0x2) /* has range on conformance */
+            stubMsg.CorrDespIncrement = 12;
     }
 
     /* order of phases:
@@ -1345,6 +1347,8 @@ LONG WINAPI NdrStubCall2(
         {
             /* initialize extra correlation package */
             NdrCorrelationInitialize(&stubMsg, NdrCorrCache, sizeof(NdrCorrCache), 0);
+            if (ext_flags.Unused & 0x2) /* has range on conformance */
+                stubMsg.CorrDespIncrement = 12;
         }
     }
     else
@@ -1618,6 +1622,8 @@ LONG_PTR CDECL ndr_async_client_call( PMIDL_STUB_DESC pStubDesc, PFORMAT_STRING
     {
         /* initialize extra correlation package */
         NdrCorrelationInitialize(pStubMsg, async_call_data->NdrCorrCache, sizeof(async_call_data->NdrCorrCache), 0);
+        if (ext_flags.Unused & 0x2) /* has range on conformance */
+            pStubMsg->CorrDespIncrement = 12;
     }
 
     /* order of phases:
diff --git a/include/ndrtypes.h b/include/ndrtypes.h
index 8605b73..b353ce5 100644
--- a/include/ndrtypes.h
+++ b/include/ndrtypes.h
@@ -83,7 +83,11 @@ typedef struct
      *  routine @ NotifyIndex. */
     unsigned char HasNotify2 : 1; /* 0x10 - should call MIDL [notify_flag] routine @ 
      *  NotifyIndex. */
-    unsigned char Unused : 3;
+
+    /* The following bits are in fact used by midl but haven't yet been
+       named in the SDK. */
+    unsigned char Unused : 3; /* 0x20 - has complex return */
+                              /* 0x40 - has range on conformance */
 } INTERPRETER_OPT_FLAGS2, *PINTERPRETER_OPT_FLAGS2;
 
 /* Win2000 extensions */
-- 
1.8.0




More information about the wine-patches mailing list