Huw Davies : ole32: Add support for marshalling pUnkForRelease.

Alexandre Julliard julliard at winehq.org
Mon May 18 08:13:15 CDT 2009


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

Author: Huw Davies <huw at codeweavers.com>
Date:   Thu May 14 12:33:18 2009 +0100

ole32: Add support for marshalling pUnkForRelease.

---

 dlls/ole32/tests/usrmarshal.c |    8 ++++----
 dlls/ole32/usrmarshal.c       |    6 +++---
 2 files changed, 7 insertions(+), 7 deletions(-)

diff --git a/dlls/ole32/tests/usrmarshal.c b/dlls/ole32/tests/usrmarshal.c
index e9592ed..0f998d0 100644
--- a/dlls/ole32/tests/usrmarshal.c
+++ b/dlls/ole32/tests/usrmarshal.c
@@ -623,15 +623,15 @@ static void test_marshal_STGMEDIUM(void)
 
     init_user_marshal_cb(&umcb, &stub_msg, &rpc_msg, NULL, 0, MSHCTX_DIFFERENTMACHINE);
     size = STGMEDIUM_UserSize(&umcb.Flags, 0, &med);
-    todo_wine ok(size == unk_size + 2 * sizeof(DWORD), "size %d should be %d bytes\n", size, unk_size + 8);
+    ok(size == unk_size + 2 * sizeof(DWORD), "size %d should be %d bytes\n", size, unk_size + 8);
 
     buffer = HeapAlloc(GetProcessHeap(), 0, size * 2);
     init_user_marshal_cb(&umcb, &stub_msg, &rpc_msg, buffer, size, MSHCTX_DIFFERENTMACHINE);
     buffer_end = STGMEDIUM_UserMarshal(&umcb.Flags, buffer, &med);
-    todo_wine ok(buffer_end - buffer - 2 * sizeof(DWORD) == unk_buffer_end - unk_buffer, "buffer size mismatch\n");
+    ok(buffer_end - buffer - 2 * sizeof(DWORD) == unk_buffer_end - unk_buffer, "buffer size mismatch\n");
     ok(*(DWORD*)buffer == TYMED_NULL, "got %08x\n", *(DWORD*)buffer);
     ok(*((DWORD*)buffer+1) != 0, "got %08x\n", *((DWORD*)buffer+1));
-    todo_wine ok(!memcmp(buffer+8, unk_buffer, unk_buffer_end - unk_buffer), "buffer mismatch\n");
+    ok(!memcmp(buffer+8, unk_buffer, unk_buffer_end - unk_buffer), "buffer mismatch\n");
 
     init_user_marshal_cb(&umcb, &stub_msg, &rpc_msg, buffer, size, MSHCTX_DIFFERENTMACHINE);
 
@@ -642,7 +642,7 @@ static void test_marshal_STGMEDIUM(void)
     STGMEDIUM_UserUnmarshal(&umcb.Flags, buffer, &med2);
 
     ok(med2.tymed == TYMED_NULL, "got tymed %x\n", med2.tymed);
-    todo_wine ok(med2.pUnkForRelease != NULL, "Incorrectly unmarshalled\n");
+    ok(med2.pUnkForRelease != NULL, "Incorrectly unmarshalled\n");
 
     HeapFree(GetProcessHeap(), 0, buffer);
     init_user_marshal_cb(&umcb, &stub_msg, &rpc_msg, NULL, 0, MSHCTX_DIFFERENTMACHINE);
diff --git a/dlls/ole32/usrmarshal.c b/dlls/ole32/usrmarshal.c
index 07a4aed..e2fb870 100644
--- a/dlls/ole32/usrmarshal.c
+++ b/dlls/ole32/usrmarshal.c
@@ -1808,7 +1808,7 @@ ULONG __RPC_USER STGMEDIUM_UserSize(ULONG *pFlags, ULONG StartingSize, STGMEDIUM
     }
 
     if (pStgMedium->pUnkForRelease)
-        FIXME("buffer size pUnkForRelease\n");
+        size = WdtpInterfacePointer_UserSize(pFlags, LOWORD(*pFlags), size, pStgMedium->pUnkForRelease, &IID_IUnknown);
 
     return size;
 }
@@ -1914,7 +1914,7 @@ unsigned char * __RPC_USER STGMEDIUM_UserMarshal(ULONG *pFlags, unsigned char *p
     }
 
     if (pStgMedium->pUnkForRelease)
-        FIXME("marshal pUnkForRelease\n");
+        pBuffer = WdtpInterfacePointer_UserMarshal(pFlags, LOWORD(*pFlags), pBuffer, pStgMedium->pUnkForRelease, &IID_IUnknown);
 
     return pBuffer;
 }
@@ -2053,7 +2053,7 @@ unsigned char * __RPC_USER STGMEDIUM_UserUnmarshal(ULONG *pFlags, unsigned char
 
     pStgMedium->pUnkForRelease = NULL;
     if (releaseunk)
-        FIXME("unmarshal pUnkForRelease\n");
+        pBuffer = WdtpInterfacePointer_UserUnmarshal(pFlags, pBuffer, &pStgMedium->pUnkForRelease, &IID_IUnknown);
 
     return pBuffer;
 }




More information about the wine-cvs mailing list