Huw Davies : rpcrt4: Add support for FC_FLOAT and FC_DOUBLE in complex structures.

Alexandre Julliard julliard at winehq.org
Mon Feb 22 08:46:56 CST 2010


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

Author: Huw Davies <huw at codeweavers.com>
Date:   Mon Feb 22 11:49:19 2010 +0000

rpcrt4: Add support for FC_FLOAT and FC_DOUBLE in complex structures.

---

 dlls/rpcrt4/ndr_marshall.c |   28 ++++++++++++++++++++++++++++
 1 files changed, 28 insertions(+), 0 deletions(-)

diff --git a/dlls/rpcrt4/ndr_marshall.c b/dlls/rpcrt4/ndr_marshall.c
index 3b10af4..e594c95 100644
--- a/dlls/rpcrt4/ndr_marshall.c
+++ b/dlls/rpcrt4/ndr_marshall.c
@@ -2696,11 +2696,21 @@ static unsigned char * ComplexMarshall(PMIDL_STUB_MESSAGE pStubMsg,
       safe_copy_to_buffer(pStubMsg, pMemory, 4);
       pMemory += 4;
       break;
+    case RPC_FC_FLOAT:
+      TRACE("float=%f <= %p\n", *(float*)pMemory, pMemory);
+      safe_copy_to_buffer(pStubMsg, pMemory, sizeof(float));
+      pMemory += sizeof(float);
+      break;
     case RPC_FC_HYPER:
       TRACE("longlong=%s <= %p\n", wine_dbgstr_longlong(*(ULONGLONG*)pMemory), pMemory);
       safe_copy_to_buffer(pStubMsg, pMemory, 8);
       pMemory += 8;
       break;
+    case RPC_FC_DOUBLE:
+      TRACE("double=%f <= %p\n", *(double*)pMemory, pMemory);
+      safe_copy_to_buffer(pStubMsg, pMemory, sizeof(double));
+      pMemory += sizeof(double);
+      break;
     case RPC_FC_POINTER:
     {
       unsigned char *saved_buffer;
@@ -2825,11 +2835,21 @@ static unsigned char * ComplexUnmarshall(PMIDL_STUB_MESSAGE pStubMsg,
       TRACE("long=%d => %p\n", *(DWORD*)pMemory, pMemory);
       pMemory += 4;
       break;
+    case RPC_FC_FLOAT:
+      safe_copy_from_buffer(pStubMsg, pMemory, sizeof(float));
+      TRACE("float=%f => %p\n", *(float*)pMemory, pMemory);
+      pMemory += sizeof(float);
+      break;
     case RPC_FC_HYPER:
       safe_copy_from_buffer(pStubMsg, pMemory, 8);
       TRACE("longlong=%s => %p\n", wine_dbgstr_longlong(*(ULONGLONG*)pMemory), pMemory);
       pMemory += 8;
       break;
+    case RPC_FC_DOUBLE:
+      safe_copy_from_buffer(pStubMsg, pMemory, sizeof(double));
+      TRACE("double=%f => %p\n", *(double*)pMemory, pMemory);
+      pMemory += sizeof(double);
+      break;
     case RPC_FC_POINTER:
     {
       unsigned char *saved_buffer;
@@ -2950,10 +2970,12 @@ static unsigned char * ComplexBufferSize(PMIDL_STUB_MESSAGE pStubMsg,
     case RPC_FC_LONG:
     case RPC_FC_ULONG:
     case RPC_FC_ENUM32:
+    case RPC_FC_FLOAT:
       safe_buffer_length_increment(pStubMsg, 4);
       pMemory += 4;
       break;
     case RPC_FC_HYPER:
+    case RPC_FC_DOUBLE:
       safe_buffer_length_increment(pStubMsg, 8);
       pMemory += 8;
       break;
@@ -3053,9 +3075,11 @@ static unsigned char * ComplexFree(PMIDL_STUB_MESSAGE pStubMsg,
     case RPC_FC_ULONG:
     case RPC_FC_ENUM16:
     case RPC_FC_ENUM32:
+    case RPC_FC_FLOAT:
       pMemory += 4;
       break;
     case RPC_FC_HYPER:
+    case RPC_FC_DOUBLE:
       pMemory += 8;
       break;
     case RPC_FC_POINTER:
@@ -3141,10 +3165,12 @@ static ULONG ComplexStructMemorySize(PMIDL_STUB_MESSAGE pStubMsg,
     case RPC_FC_LONG:
     case RPC_FC_ULONG:
     case RPC_FC_ENUM32:
+    case RPC_FC_FLOAT:
       size += 4;
       safe_buffer_increment(pStubMsg, 4);
       break;
     case RPC_FC_HYPER:
+    case RPC_FC_DOUBLE:
       size += 8;
       safe_buffer_increment(pStubMsg, 8);
       break;
@@ -3236,9 +3262,11 @@ ULONG ComplexStructSize(PMIDL_STUB_MESSAGE pStubMsg, PFORMAT_STRING pFormat)
     case RPC_FC_ULONG:
     case RPC_FC_ENUM16:
     case RPC_FC_ENUM32:
+    case RPC_FC_FLOAT:
       size += 4;
       break;
     case RPC_FC_HYPER:
+    case RPC_FC_DOUBLE:
       size += 8;
       break;
     case RPC_FC_POINTER:




More information about the wine-cvs mailing list