Henri Verbeet : rpcrt4: Properly size complex reference pointers.

Alexandre Julliard julliard at winehq.org
Fri Sep 23 10:56:50 CDT 2011


Module: wine
Branch: master
Commit: f687728c43011900f25007fe9d90139634afaa51
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=f687728c43011900f25007fe9d90139634afaa51

Author: Henri Verbeet <hverbeet at codeweavers.com>
Date:   Thu Sep 22 21:40:06 2011 +0200

rpcrt4: Properly size complex reference pointers.

---

 dlls/rpcrt4/ndr_stubless.c |   11 +++++++++--
 1 files changed, 9 insertions(+), 2 deletions(-)

diff --git a/dlls/rpcrt4/ndr_stubless.c b/dlls/rpcrt4/ndr_stubless.c
index b68ff32..5eb699e 100644
--- a/dlls/rpcrt4/ndr_stubless.c
+++ b/dlls/rpcrt4/ndr_stubless.c
@@ -149,6 +149,15 @@ static DWORD calc_arg_size(MIDL_STUB_MESSAGE *pStubMsg, PFORMAT_STRING pFormat)
     DWORD size;
     switch(*pFormat)
     {
+    case RPC_FC_RP:
+        if (pFormat[1] & RPC_FC_P_SIMPLEPOINTER)
+        {
+            FIXME("Simple reference pointer (type %#x).\n", pFormat[2]);
+            size = sizeof(void *);
+            break;
+        }
+        size = calc_arg_size(pStubMsg, &pFormat[2] + *(WORD *)&pFormat[2]);
+        break;
     case RPC_FC_STRUCT:
     case RPC_FC_PSTRUCT:
         size = *(const WORD*)(pFormat + 2);
@@ -202,8 +211,6 @@ static DWORD calc_arg_size(MIDL_STUB_MESSAGE *pStubMsg, PFORMAT_STRING pFormat)
         break;
     default:
         FIXME("Unhandled type %02x\n", *pFormat);
-        /* fallthrough */
-    case RPC_FC_RP:
         size = sizeof(void *);
         break;
     }




More information about the wine-cvs mailing list