Dmitry Timoshkov dmitry@baikal.ru writes:
@@ -650,30 +672,43 @@ static HRESULT load_IFD_entry(IStream *input, const struct IFD_entry *entry, SWAP_ULONG(count); type = entry->type; SWAP_USHORT(type);
item->value.vt = tag_to_vt(type); value = entry->value; SWAP_ULONG(value);
switch (type) {
case IFD_BYTE:
case IFD_SBYTE:
if (count == 1)
{
item->value.u.bVal = *(BYTE *)&value;
break;
}
FIXME("loading multiple byte fields is not implemented\n");
break;
This seems to contradict the endianness support. Are you really supposed to byte-swap arrays of bytes?
Alexandre Julliard julliard@winehq.org wrote:
case IFD_BYTE:
case IFD_SBYTE:
if (count == 1)
{
item->value.u.bVal = *(BYTE *)&value;
break;
}
FIXME("loading multiple byte fields is not implemented\n");
break;
This seems to contradict the endianness support. Are you really supposed to byte-swap arrays of bytes?
It doesn't matter at this point. I'm planning to add a test for endianness handling in IFD reader, if this is proved to be wrong the fix will be trivial. Please consider accepting the patch as is.