[Bug 14078] Rewrite typelib marshaller on top of NDR functions

wine-bugs at winehq.org wine-bugs at winehq.org
Sun Aug 19 11:18:28 CDT 2018


https://bugs.winehq.org/show_bug.cgi?id=14078

Zebediah Figura <z.figura12 at gmail.com> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |z.figura12 at gmail.com
           Assignee|wine-bugs at winehq.org        |z.figura12 at gmail.com

--- Comment #10 from Zebediah Figura <z.figura12 at gmail.com> ---
Created attachment 62098
  --> https://bugs.winehq.org/attachment.cgi?id=62098
eponymous rewrite

I've attached a set of patches, in a hopefully reviewable state, that perform
this task.

These patches pass all of the currently existing tests in oleaut32. I haven't
yet done exhaustive testing with real-world programs, partly because I don't
know any real-world programs to test with. If anyone does, please let me know.

Currently there are two problems with these patches:

(1) Patch 0010 embeds an automatically generated type format string into the
file itself. This is suboptimal: we'd like that string to be automatically
generated, but it's not clear how to do that. Adding a dummy IDL and accessing
its exported variables from ndr_typelib.c doesn't give us all that we need (in
particular, we can get the address of the type format string itself, and the
offsets of the Automation types, but we have no way of getting the string's
length). Including the generated .c file inside of ndr_typelib.c won't work
because it'll result in multiple definitions.

(2) shell32:shelldispatch fails. It fails because the implementation given here
(in particular patch 0012) always delegates proxy methods to parents if they
aren't IUnknown, and that runs into bug 45673 when we call
IWebBrowser2_get_Application() [line 1128]. I don't know how to solve bug
45673, so I'd really appreciate advice there.

-- 
Do not reply to this email, post in Bugzilla using the
above URL to reply.
You are receiving this mail because:
You are watching all bug changes.



More information about the wine-bugs mailing list