"Ge van Geldorp" <ggeld...@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 julli...@winehq.org