Module: wine Branch: master Commit: cac5a5996a6bba6e9c99de5f3acda59510a0cddc URL: http://source.winehq.org/git/wine.git/?a=commit;h=cac5a5996a6bba6e9c99de5f3a...
Author: Michael Stefaniuc mstefani@redhat.de Date: Thu Sep 8 21:25:27 2016 +0200
mscoree: There can be only one QI implementation in a COM object.
Signed-off-by: Michael Stefaniuc mstefani@redhat.de Signed-off-by: Vincent Povirk vincent@codeweavers.com Signed-off-by: Alexandre Julliard julliard@winehq.org
---
dlls/mscoree/config.c | 29 +++++++++-------------------- 1 file changed, 9 insertions(+), 20 deletions(-)
diff --git a/dlls/mscoree/config.c b/dlls/mscoree/config.c index b8bf882..a52a521 100644 --- a/dlls/mscoree/config.c +++ b/dlls/mscoree/config.c @@ -73,18 +73,19 @@ static inline ConfigFileHandler *impl_from_ISAXErrorHandler(ISAXErrorHandler *if static HRESULT WINAPI ConfigFileHandler_QueryInterface(ISAXContentHandler *iface, REFIID riid, void **ppvObject) { - if (IsEqualGUID(riid, &IID_ISAXContentHandler) || - IsEqualGUID(riid, &IID_IUnknown)) - { - *ppvObject = iface; - } + ConfigFileHandler *This = impl_from_ISAXContentHandler(iface); + + if (IsEqualGUID(riid, &IID_ISAXContentHandler) || IsEqualGUID(riid, &IID_IUnknown)) + *ppvObject = &This->ISAXContentHandler_iface; + else if (IsEqualGUID(riid, &IID_ISAXErrorHandler)) + *ppvObject = &This->ISAXErrorHandler_iface; else { WARN("Unsupported interface %s\n", debugstr_guid(riid)); return E_NOINTERFACE; }
- ISAXContentHandler_AddRef(iface); + IUnknown_AddRef((IUnknown*)*ppvObject);
return S_OK; } @@ -377,20 +378,8 @@ static const struct ISAXContentHandlerVtbl ConfigFileHandlerVtbl = static HRESULT WINAPI ConfigFileHandler_Error_QueryInterface(ISAXErrorHandler *iface, REFIID riid, void **ppvObject) { - if (IsEqualGUID(riid, &IID_ISAXErrorHandler) || - IsEqualGUID(riid, &IID_IUnknown)) - { - *ppvObject = iface; - } - else - { - WARN("Unsupported interface %s\n", debugstr_guid(riid)); - return E_NOINTERFACE; - } - - ISAXErrorHandler_AddRef(iface); - - return S_OK; + ConfigFileHandler *This = impl_from_ISAXErrorHandler(iface); + return ISAXContentHandler_QueryInterface(&This->ISAXContentHandler_iface, riid, ppvObject); }
static ULONG WINAPI ConfigFileHandler_Error_AddRef(ISAXErrorHandler *iface)