[PATCH 2/2] mscoree: There can be only one QI implementation i a COM object!
Michael Stefaniuc
mstefani at redhat.de
Thu Sep 8 14:25:27 CDT 2016
Signed-off-by: Michael Stefaniuc <mstefani at redhat.de>
---
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)
--
2.7.4
More information about the wine-patches
mailing list