Dmitry Timoshkov dmitry@baikal.ru writes:
Nikolay Sivov bunglehead@gmail.com wrote:
../../tools/widl/widl -o msxml3_v1_t.res -m32 -I. -I../../include -I/usr/include/libxml2 -D__WINESRC__ \ msxml3_v1.idl warning: duplicate uuid {50ea08b4-dd1b-4664-9a50-c2f40f4bd79a} (plus the same warnings in other msxml* directories).
This is ISchema. Not sure why this is happening.
The warning is emitted because the hash keys returned by ctl2_hash_guid() for IXMLDOMSchemaCollection2 (50ea08b0-dd1b-4664-9a50-c2f40f4bd79a) and ISchema (50ea08b4-dd1b-4664-9a50-c2f40f4bd79a) are the same. It seems to me a bit inadequate that ctl2_hash_guid() does 'return hash & 0x1f'. But I think that fixing this problem is outside of the scope of my patches and deserves a separate investigation.
If a hash collision triggers a warning that would definitely be a bug in your code, but I don't think that's the reason here.
Do you have an idea what might be a reason of the collision?
Collision on its own is not a problem. ctl2_hash_guid() returns index, not a hash value, and GUID hash segment size is fixed to 0x80 (0x80 / 0x1f = sizeof(int)), so masking with 0x1f is adequate.
Then ctl2_find_guid() shouldn't return same offset for different guids.
It doesn't. That's not where the bug is.