http://bugs.winehq.org/show_bug.cgi?id=2830
------- Additional Comments From whitesnake78@mail.com 2005-05-09 13:14 ------- Created an attachment (id=1006) --> (http://bugs.winehq.org/attachment.cgi?id=1006&action=view) patch against typelib.c 1.167
Patch goes in typelib.c and is attached as a diff file against typelib.c 1.167.
Patch is divided in 3 parts: 1) in MSFT_DoFuncs: "reclength" of the function information record is stored in a 16 bit int and not in a 8 bit int as previously supposed, using a 0x1ff mask. Upper 16 bits contains the ordinal number of the function. Allocation of the "recbuf" must be modified, to support larger data. 2) Supporting a larger number of parameters means that the function "_invoke" must be updated too. Maybe there is a smarter way than the one i've found. 3) This is a "new" bug I discovered: in ITypeInfo_fnInvoke, after _invoke, when you copy data back to pVarResult, you must not always do it. Sometimes pVarResult is passet to the called function, so data is already in the exit buffer. Check the comment few lines above "If pointer to variant, pass reference it."