oleaut32: fix regression at MSFT typelib parsing

a_villacis at palosanto.com a_villacis at palosanto.com
Fri Nov 3 16:39:35 CST 2006


> On Fr, 2006-11-03 at 11:42 -0500, a_villacis at palosanto.com wrote:
>> Finally, I managed to figure out the proper fix for the crash on
>> regsvr32 msvbvm60.dll
>
> Great!
> Thanks for your investigation.
>
> I have no Idea about ole, but...
>
>>    MESSAGE("\thelpstring: %s\n", debugstr_w(pfd->HelpString));
>> -  MESSAGE("\tentry: %s\n", debugstr_w(pfd->Entry));
>> +  if (HIWORD(pfd->Entry) == 0)
>> +      MESSAGE("\tentry (ordinal): 0x%04x\n", (INT)pfd->Entry);
>> +  else if (pfd->Entry != (void *)-1)
>> +      MESSAGE("\tentry (string): %s\n", debugstr_w(pfd->Entry));
>> +  else
>> +      MESSAGE("\tentry (invalid): -1\n");
>
> Pointers with "HIWORD() == 0" are already handled by debugstr_w().
> You will get a "#" followed by the number.
>
> I suggest to reuse the old code:
> MESSAGE("\tentry: %s\n", (entry == -1) ? "-1 (invalid)" :
> debugstr_w(pfd->Entry));
>
> Another Idea is to check only for "-1" and use
> the previous code unmodified for all other cases.
>
>
> --
>
> By by ... Detlef
>
>
>
>

New version of the patch, with suggested changes.

Changelog:
* Fix regression on MSFT typelib parsing of function records by allocating
  a string copy only when indicated by FKCCIC flag, and preserving the
meaning of value as function ordinal otherwise.

Alex Villacís Lasso
-------------- next part --------------
A non-text attachment was scrubbed...
Name: wine-oleaut32-typelib-MSFT-Entry.patch
Type: text/x-patch
Size: 1598 bytes
Desc: not available
Url : http://www.winehq.org/pipermail/wine-patches/attachments/20061103/889ee3e1/wine-oleaut32-typelib-MSFT-Entry.bin


More information about the wine-patches mailing list