From cc68fc44671959d8be5fc6fd77e5da52d590566a Mon Sep 17 00:00:00 2001 From: Huw Davies Date: Thu, 14 May 2009 12:33:18 +0100 Subject: [PATCH] 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 e9592ed48fb..0f998d08a56 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 07a4aed1c4d..e2fb870e49b 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; }