Typelib marshalling BSTRs

Mike Hearn mike at theoretic.com
Tue Jul 22 06:25:04 CDT 2003


On Mon, 2003-07-21 at 17:30, Ove Kaaven wrote:
> > I found that it's in IDispatch_Invoke_Stub - it calls IDispatch::Invoke
> > on the actual object and crashes, in native shdocvw code. So, I guess
> > the inputs its given there are incorrect somehow. I'll look into it some
> > more.
> 
> OK.

I found the problem was due to the location of the riid = NULL
initializer code. For some reason, when the: REFIID riid = NULL; line is
at the function prologue, assigning to it using *ppMemory doesn't work.
If the variable is initialized to NULL inside the RPC TryFinally area,
just before the call to NdrSimpleStructUnmarshall, it works OK.

So, I'm CCing Greg as well, to see if he knows why the Wine SEH code
might interfere with setting the values like that. As it is, until the
actual problem is found I just have to remember to edit the midl output.

thanks -mike




More information about the wine-devel mailing list