[2/6] widl: Ignore assigment of a duplicate uuid.

Alexandre Julliard julliard at winehq.org
Tue Oct 27 02:50:30 CDT 2015


Dmitry Timoshkov <dmitry at baikal.ru> writes:

> Nikolay Sivov <bunglehead at 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.

-- 
Alexandre Julliard
julliard at winehq.org



More information about the wine-devel mailing list