DBGRID32.OCX fix - RFC

Alex Villací­s Lasso a_villacis at palosanto.com
Fri Dec 2 13:49:44 CST 2005


Alex Villací­s Lasso wrote:

> Robert Shearman wrote:
>
>>
>> What hRefType is passed to the function? I don't think the above is 
>> quite correct. Can you try changing the if statement to something 
>> like this:
>>
>>    if (hRefType == -1 &&
>>     (This->TypeAttr.typekind   == TKIND_DISPATCH) &&
>>     (This->TypeAttr.wTypeFlags &  
>> (TYPEFLAG_FDUAL|TYPEFLAG_FDISPATCHABLE)))
>>
>>
> That would not keep the app from crashing. For the case of 
> DBGRID32.OCX, hRefType is systematically == 19, and it says so in the 
> ERR message just before the crash. However, on a second look, maybe 
> the problem is not that the function performs the wrong action, but 
> that it returns the wrong value (E_FAIL, should be 
> TYPE_E_ELEMENTNOTFOUND). I have to check this alternate theory on my 
> home machine.
>
> Alex Villacís Lasso
>
>
>
More information: if the flag dumping portion of the patch is applied, 
but the condition portion is not, and a dump of the available references 
is added, the following is the result when trying to load DBGRID32.OCX:

fixme:ole:ITypeInfo_fnGetRefTypeInfo    pRefType->reference == 0x0640
fixme:ole:ITypeInfo_fnGetRefTypeInfo    pRefType->reference == 0x0190
fixme:ole:ITypeInfo_fnGetRefTypeInfo    pRefType->reference == 0x03e8
fixme:ole:ITypeInfo_fnGetRefTypeInfo    pRefType->reference == 0x0031
fixme:ole:ITypeInfo_fnGetRefTypeInfo    pRefType->reference == 0x0708
fixme:ole:ITypeInfo_fnGetRefTypeInfo    pRefType->reference == 0x0258
fixme:ole:ITypeInfo_fnGetRefTypeInfo    pRefType->reference == 0x00c8
fixme:ole:ITypeInfo_fnGetRefTypeInfo    pRefType->reference == 0x003d
fixme:ole:ITypeInfo_fnGetRefTypeInfo    pRefType->reference == 0x0578
fixme:ole:ITypeInfo_fnGetRefTypeInfo    pRefType->reference == 0x07d0
fixme:ole:ITypeInfo_fnGetRefTypeInfo    pRefType->reference == 0xffffffff
fixme:ole:ITypeInfo_fnGetRefTypeInfo Can't find pRefType for ref 19
fixme:ole:ITypeInfo_fnGetRefTypeInfo    typekind is TKIND_DISPATCH
fixme:ole:ITypeInfo_fnGetRefTypeInfo    wTypeFlags are: TYPEFLAG_FHIDDEN 
TYPEFLAG_FNONEXTENSIBLE TYPEFLAG_FDISPATCHABLE
wine: Unhandled page fault on read access to 0x00000010 at address 
0x230f4f31 (thread 0009), starting debugger...

BTW, no luck on the bad-return-value theory, the app keeps crashing.

Alex Villacís Lasso



More information about the wine-devel mailing list