"Ge van Geldorp" <ggeldorp(a)vmware.com> writes:
> @@ -417,18 +417,23 @@ static HRESULT DataObjectImpl_CreateComplex(LPDATAOBJECT *lplpdataobj)
> InitFormatEtc(obj->fmtetc[1], cf_stream, TYMED_ISTREAM);
> InitFormatEtc(obj->fmtetc[2], cf_storage, TYMED_ISTORAGE);
> InitFormatEtc(obj->fmtetc[3], cf_another, TYMED_ISTORAGE|TYMED_ISTREAM|TYMED_HGLOBAL);
> - memset(&dm, 0, sizeof(dm));
> - dm.dmSize = sizeof(dm);
> - dm.dmDriverExtra = 0;
> - lstrcpyW(dm.dmDeviceName, device_name);
> - obj->fmtetc[3].ptd = HeapAlloc(GetProcessHeap(), 0, FIELD_OFFSET(DVTARGETDEVICE, tdData) + sizeof(device_name) + dm.dmSize + dm.dmDriverExtra);
> - obj->fmtetc[3].ptd->tdSize = FIELD_OFFSET(DVTARGETDEVICE, tdData) + sizeof(device_name) + dm.dmSize + dm.dmDriverExtra;
> - obj->fmtetc[3].ptd->tdDriverNameOffset = FIELD_OFFSET(DVTARGETDEVICE, tdData);
> - obj->fmtetc[3].ptd->tdDeviceNameOffset = 0;
> - obj->fmtetc[3].ptd->tdPortNameOffset = 0;
> - obj->fmtetc[3].ptd->tdExtDevmodeOffset = obj->fmtetc[3].ptd->tdDriverNameOffset + sizeof(device_name);
> - lstrcpyW((WCHAR*)obj->fmtetc[3].ptd->tdData, device_name);
> - memcpy(obj->fmtetc[3].ptd->tdData + sizeof(device_name), &dm, dm.dmSize + dm.dmDriverExtra);
> + if (! broken(TRUE)) /* Windows messes up ptd when doing OleGetClipboard() */
> + {
If that case is really unconditionally broken on Windows it doesn't make
sense to test it at all.
--
Alexandre Julliard
julliard(a)winehq.org