Am Mittwoch, den 07.01.2009, 16:03 +0000 schrieb Rob Shearman:
So it appears Windows RPCRT4.dll is not happy with FC_ULONG entries within a complex structure. I added a bunch of other primitive types to my complex_t structure to see how they are treated by MIDL. See attached complex.idl file and the MIDL-generated midl_complex_c.c file (also attached WIDL-generated widl_complex_c.c for completeness). It appears that MIDL simply drops the "unsigned" from any base type, at least within complex structures. "unsigned long" gets encoded as FC_LONG, "unsigned short" as FC_SHORT and "unsigned small" as FC_SMALL.
Like I said, I'm no IDL expert. Does the stuff above make sense to you? Do you think it would be a good idea to change WIDL to generate the same encodings as MIDL?
Yes, and in fact Michael Karcher has already sent in a pair of patches to do this: http://www.winehq.org/pipermail/wine-patches/2009-January/067032.html http://www.winehq.org/pipermail/wine-patches/2009-January/067031.html
However, they probably won't apply cleanly after my recent changes. Michael, do you plan to rebase and resend these? If not, I can do this.
I will rebase them today in the evening (and send them in). I hope Alexandre doesn't put me back in the queue because some of my last patches were a bit quick-shot and flawed. I really believe that these two are not doing any colleteral damage.
Regards, Michael Karcher