marcus@jet.franken.de wrote:
Actually I think just the DATE part should be out there, which is 8 byte long.
I'm not convinced. The following tracepoint: trace:ole:ITypeInfo_fnInvoke set 0 to disparg type 7 vs 12
This shows that the arg 0 was supplied by the application as a VT_DATE but the function itself wants a VT_VARIANT. I have found whatever is the first word on the stack is later passed into another variant function as the vt type field. Putting the whole variant onto the stack is the only way I have got beyond that function.
If the function took a VT_DATE, you may well be correct. I think we need to change that code to memcpy onto the args storage the variant size (or sizeof DWORD, I guess as that is minimum size for an arg by the way we currently have it coded). If you agree, I'll have a go at doing a patch, although if you understand it better than me please (really - please!) feel free to code it for me.
My 'hack' definitiely got me further through to the next point which is a bug in the oleaut32 vardate handling routines which I am currently hacking. My last change cause the app to crash the whole of Linux (no mouse, keyboard etc!). Rebooting now to try again...
Oh I love having a few days off with nothing to do except fiddling with wine internals!
Regards, Jason