These look like 2 separate COM objects to me. They have different
IUnknown pointers and a different set of implemented interfaces. Is
there a reason to link them?
On Thu, Sep 8, 2016 at 2:25 PM, Michael Stefaniuc <mstefani(a)redhat.de> wrote:
> Signed-off-by: Michael Stefaniuc <mstefani(a)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
>
>