On Wed, Sep 15, 2010 at 12:40:46PM +0100, Huw Davies wrote: > On Wed, Sep 15, 2010 at 01:34:06PM +0200, Marcus Meissner wrote: > > On Wed, Sep 15, 2010 at 12:22:57PM +0100, Huw Davies wrote: > > > On Wed, Sep 15, 2010 at 08:04:51PM +0900, Dmitry Timoshkov wrote: > > > > Marcus Meissner <mar...@jet.franken.de> wrote: > > > > > > > > > + if (!unk) { > > > > > + FIXME("hr was %d, but unk is NULL?\n", hr); > > > > > + return E_FAIL; > > > > > + } > > > > > > > > IDropTarget_QueryInterface() should be fixed instead. > > > > > > The implementation is in abiword, so that would be tricky. > > > > > > Marcus, you're leaking a stream in this error path. Better > > > to do something like: > > > if(FAILED(hr) || !unk) > > > > yeah, but what error to return :/ > > Yeah, sorry. Something like: > if(!unk) hr = E_NOINTERFACE; > right after the QI call.
I ran testbot, https://testbot.winehq.org/JobDetails.pl?Key=5239 and it also has 0 as hr for the case. So returning failure might not be right approach. Abiword has this code btw: STDMETHODIMP XAP_Win32DropTarget::QueryInterface(REFIID /*riid*/, LPVOID FAR* /*ppvObj*/) { return S_OK; } The fun... Would erroring out be right? If an interface directly inherits IUnknown, do we need a QueryInterface or could we just cast? Ciao, Marcus