From 9b471fbd149746285adb9120be72e67f6de4e74f Mon Sep 17 00:00:00 2001 From: Alexandre Julliard Date: Tue, 6 Apr 2010 21:45:38 +0200 Subject: [PATCH] ole32: Fix the free threaded marshaller data for 64-bit pointers. --- dlls/ole32/ftmarshal.c | 29 +++++++++++++++++++---------- 1 file changed, 19 insertions(+), 10 deletions(-) diff --git a/dlls/ole32/ftmarshal.c b/dlls/ole32/ftmarshal.c index 13802854fa6..d8f4bf649b8 100644 --- a/dlls/ole32/ftmarshal.c +++ b/dlls/ole32/ftmarshal.c @@ -204,8 +204,11 @@ FTMarshalImpl_MarshalInterface (LPMARSHAL iface, IStream * pStm, REFIID riid, vo hres = IStream_Write (pStm, &object, sizeof (object), NULL); if (hres != S_OK) return STG_E_MEDIUMFULL; - hres = IStream_Write (pStm, &constant, sizeof (constant), NULL); - if (hres != S_OK) return STG_E_MEDIUMFULL; + if (sizeof(object) == sizeof(DWORD)) + { + hres = IStream_Write (pStm, &constant, sizeof (constant), NULL); + if (hres != S_OK) return STG_E_MEDIUMFULL; + } hres = IStream_Write (pStm, &unknown_guid, sizeof (unknown_guid), NULL); if (hres != S_OK) return STG_E_MEDIUMFULL; @@ -237,10 +240,13 @@ FTMarshalImpl_UnmarshalInterface (LPMARSHAL iface, IStream * pStm, REFIID riid, hres = IStream_Read (pStm, &object, sizeof (object), NULL); if (hres != S_OK) return STG_E_READFAULT; - hres = IStream_Read (pStm, &constant, sizeof (constant), NULL); - if (hres != S_OK) return STG_E_READFAULT; - if (constant != 0) - FIXME("constant is 0x%x instead of 0\n", constant); + if (sizeof(object) == sizeof(DWORD)) + { + hres = IStream_Read (pStm, &constant, sizeof (constant), NULL); + if (hres != S_OK) return STG_E_READFAULT; + if (constant != 0) + FIXME("constant is 0x%x instead of 0\n", constant); + } hres = IStream_Read (pStm, &unknown_guid, sizeof (unknown_guid), NULL); if (hres != S_OK) return STG_E_READFAULT; @@ -267,10 +273,13 @@ static HRESULT WINAPI FTMarshalImpl_ReleaseMarshalData (LPMARSHAL iface, IStream hres = IStream_Read (pStm, &object, sizeof (object), NULL); if (hres != S_OK) return STG_E_READFAULT; - hres = IStream_Read (pStm, &constant, sizeof (constant), NULL); - if (hres != S_OK) return STG_E_READFAULT; - if (constant != 0) - FIXME("constant is 0x%x instead of 0\n", constant); + if (sizeof(object) == sizeof(DWORD)) + { + hres = IStream_Read (pStm, &constant, sizeof (constant), NULL); + if (hres != S_OK) return STG_E_READFAULT; + if (constant != 0) + FIXME("constant is 0x%x instead of 0\n", constant); + } hres = IStream_Read (pStm, &unknown_guid, sizeof (unknown_guid), NULL); if (hres != S_OK) return STG_E_READFAULT; -- 2.11.4.GIT